guides/short_links.md
# Short Links
Short links are resolved during dispatch after template rendering and before
adapter delivery.
## Pipeline
The pipeline:
* extracts URLs from `html`, `text`, and `body` payload fields;
* filters non-HTTP URLs, excluded patterns, and already-short domains;
* enriches eligible URLs with UTM data;
* resolves through the configured adapter;
* rewrites only URL-bearing attributes or plain-text URLs;
* persists provider-backed `short_links` rows keyed by idempotency data.
HTML rewriting uses Floki and only updates `href` and `src` attributes. Plain
text rewriting preserves trailing punctuation such as a final period.
## Adapters
Built-in adapters include:
* `DripDrop.ShortLinks.GoodAnalytics`
* `DripDrop.ShortLinks.Module`
* `DripDrop.ShortLinks.Webhook`
* `DripDrop.ShortLinks.None`
Configure `on_error: :send_originals` when delivery should continue if link
resolution fails. The original payload is delivered and the response metadata
records the short-link fallback.