Promotion Tools
Promotion Tools turn your connected channels into growth assets: direct links, QR codes, ready-made promo images, HTML snippets, and printable one-pagers — each with the correct opt-in pre-filled, so a scan or a tap is all it takes for a customer to subscribe.
You'll find them in the app on the Widgets page, in the Promotion tools section below your widgets. This page explains what they generate, how the automatic opt-in works behind each asset, and the API endpoints if you want to build your own integration.
If you haven't yet, read Getting Subscribers & Opt-Ins — it explains lists, the default list, and the START/STOP keywords that all of these assets rely on.
What You Can Generate
| Asset | Use it for |
|---|---|
| Direct links | "Message us" links for your website, email footers, social bios |
| Opt-in links | Links that open the messenger with the subscribe action pre-filled |
| QR codes | Print, packaging, posters, table displays — PNG or SVG |
| Promo images | Ready-made branded cards (social post, story, banner, print) with an embedded QR code |
| HTML snippets | Copy-paste channel buttons, badges, and email-signature blocks |
| Printable one-pager | An A4 sheet per channel with QR code and instructions for counter displays |
All assets are generated per channel and per list: pick the default list (subscribers just send start) or a specific category, and every link, QR code, and image is built accordingly.
How the Opt-In Works per Channel
Each asset embeds a channel-specific deep link. What happens when a customer uses it:
| Channel | The link | What happens |
|---|---|---|
https://wa.me/<number>?text=start | WhatsApp opens with "start" pre-filled; the customer taps send and is subscribed | |
| Telegram | https://t.me/<bot>?start=newsletter_<list_id> | Telegram opens your bot; tapping "Start" delivers the list reference and subscribes them |
| Messenger | https://m.me/<page>?ref=newsletter_<list_id> | Messenger opens your page; the ref arrives with their first message and subscribes them |
https://ig.me/m/<username> | Instagram opens a DM thread — contact only: Instagram's policies don't allow newsletters, so Instagram assets use "Contact us" framing instead of "Subscribe" | |
| SMS | sms:<number>?&body=start | The SMS app opens with "start" pre-filled |
Email is the exception: there is no keyword path — emails to your sender address are not scanned for start. For email, Promotion Tools instead point you to the newsletter signup widget (subscribers confirm via double opt-in) and to the double opt-in email template, which you can copy from the system default and customize under Reach → Email → Double opt-in templates.
For all messenger channels the subscription, the welcome message, and later STOP handling are fully automatic — no bot or flow required, and opt-in/opt-out keywords are processed before any active bot or flow, so an unsubscribe never gets swallowed by an assistant. The contact record and channel identifier are created from the customer's first message, which is exactly how the scoped-ID channels (Telegram, Messenger, Instagram) get populated at all.
Telegram and Messenger links can carry multiple lists in one payload (list references joined with _), so one tap can subscribe a customer to several categories.
Hosted, Cacheable Asset URLs
QR codes and promo images are served as stable public image URLs — generated on first request, then cached at the CDN edge. You can embed them directly in your website, emails, or CMS without downloading anything:
<img src="https://api.sendseven.com/api/v1/public/promo/card?channel=whatsapp&template=banner&title=Acme%20GmbH&...&sig=..." />
The URLs are signed (sig parameter), so they can't be tampered with — change any parameter and the URL stops working. Get signed URLs from the Promotion tools page (copy button on any asset) or via the API below.
API Reference
Get your promotion options
GET /api/v1/promo/options
Requires widgets:read. Returns your newsletter lists, your active channels with their public identifiers, and pre-built links:
{
"tenant_name": "Acme GmbH",
"asset_base_url": "https://api.sendseven.com/api/v1/public/promo",
"lists": [
{ "id": "…", "name": "Weekly Deals", "slug": "weekly-deals", "is_default": true }
],
"channels": [
{
"channel_id": "…",
"channel_type": "whatsapp",
"display_name": "Acme Support",
"identifier": "+4915123456789",
"identifier_type": "phone",
"links": {
"direct": "https://wa.me/4915123456789",
"default_list": "https://wa.me/4915123456789?text=start",
"per_list": { "<list_id>": "https://wa.me/4915123456789?text=start%20weekly-deals" }
}
}
]
}
Create a signed asset URL
POST /api/v1/promo/sign
Requires widgets:read. Pass the asset type and its parameters; get back a permanent, publicly cacheable image URL.
QR code (png or svg, 128–2048 px). Pass logo with a channel type to embed the official channel logo in the center ("art QR" — PNG only; error correction is raised automatically so the code stays scannable):
{
"asset": "qr",
"params": { "data": "https://wa.me/4915123456789?text=start", "size": 1024, "format": "png", "logo": "whatsapp" }
}
Promo card (branded image with embedded QR):
{
"asset": "card",
"params": {
"channel": "whatsapp",
"target": "https://wa.me/4915123456789?text=start",
"title": "Acme GmbH",
"subtitle": "+49 151 2345678",
"cta": "Scan & send START to subscribe",
"template": "square"
}
}
Card templates: square (1080×1080, social posts), story (1080×1920), banner (1200×628, link previews/ads), print (1480×2100, high-res for print).
Response:
{ "url": "https://api.sendseven.com/api/v1/public/promo/card?channel=whatsapp&…&sig=3f2a…" }
Good Practices
- Set a default list first. Plain
start/stoponly work with a default list — and "Text START" is the strongest call to action you can print. - Always mention how to opt out ("Reply STOP to unsubscribe") in printed material — it's required by most anti-spam regulation and builds trust.
- The link is not the consent. Someone scanning your QR code and sending START is a real opt-in. Adding numbers to a list because they once scanned something is not.
- Test with your own phone before printing: scan the QR, send the message, and check that the welcome message and list subscription look right.
Next Steps
- Getting Subscribers & Opt-Ins — lists, keywords, default list, imports
- Messaging Campaigns — send to your new subscribers
- Newsletter signup widget for your website: Widgets → Create Widget in the app