KamoCRM

Per-recipient tracked doc links in campaign and drip emails (DL5.3)

FeatureEmailService
Shipped
November 13, 2026 at 9:39 AM UTC
Author
Kamo
Commit
dbf6877

Campaign and drip emails can carry doc chips. The editor stores them as one comment block **************** JSON>-->) where the "Shared docs" cards belong. At send time CampaignDocLinks asks DocsService to issue each recipient their OWN links (source CAMPAIGN, sourceRef = the recipient row's token, as the campaign's creator, disclosure acknowledged) and puts the email-safe DocLinkCards in place of the block, after the tracking pass so doc links are never wrapped in a click redirect. DocsService not answering puts the recipient back in line uncharged; a refusal fails that recipient with the reason in plain words (never a suppression). An attempt that never reached the host revokes the links it minted. Saving a campaign or drip step whose block names a doc the saver can't share is refused (422 DOC_LINKS_REFUSED / 503 DOC_LINKS_UNAVAILABLE). GET **************** per recipient and per doc views, joined recipients -> doc_share_links on the token (batched nested loop on ix_campaign_recipient_campaign + ix_dsl_source_ref, checked by EXPLAIN). DocSharesClient: issue(..., source, ...) overload; a 404 that names a code is a refusal (no such doc for this member), a bare 404 stays "unavailable".

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing