Skip to main content

Getting Subscribers & Opt-Ins

Before you can send campaigns, you need subscribers — contacts who have explicitly agreed to receive your messages on a specific channel. This guide explains how opt-ins work in SendSeven: how lists organize your subscribers, how the automatic START/STOP keywords work on every channel, what the default list is, and how contact identifiers differ between channels.

Permission is your responsibility

SendSeven gives you the technical tools to collect and manage opt-ins, but you are responsible for having the actual permission of every person you message. Importing a contact and marking them as subscribed does not create consent — it records consent you have already obtained elsewhere. Messaging people without permission violates the platform policies of WhatsApp, Meta, and Telegram, anti-spam laws (GDPR, ePrivacy, TCPA, CAN-SPAM), and SendSeven's terms of service.

Lists: How Subscribers Are Organized

Subscriptions are managed through lists (Settings → Lists or the Lists API). There are three list types, but only one matters for opt-ins:

List typePurpose
staticManually curated contact collections
dynamicRule-based segments (filters)
newsletterOpt-in/opt-out categories — subscribers join and leave these themselves

A newsletter list represents one category of communication your contacts can subscribe to — for example "Product News", "Weekly Deals", or "Order Updates". Each newsletter list has:

FieldDescription
slugURL-safe short name, auto-generated from the list name (e.g. weekly-deals). Used in keywords (stop weekly-deals) and deep links.
is_defaultMarks this list as the tenant's default list (see below). Only one list can be the default.
newsletter_config.welcome_messageMessage sent when someone subscribes
newsletter_config.goodbye_messageMessage sent when someone unsubscribes
newsletter_config.auto_subscribe_via_deeplinkWhether deep links (t.me/...?start=...) can subscribe to this list (default: on)

A subscription is always per contact, per list, per channel. A contact can be subscribed to "Weekly Deals" on WhatsApp but not by email — those are two separate subscriptions with independent opt-in and opt-out.

The Default List

One newsletter list per workspace can be marked as the default list. The default list is what makes the simple keywords work:

  • A contact who sends just start is subscribed to the default list.
  • A contact who sends just stop is unsubscribed from the default list.

No slug or category name needed. This is what you want for most promotion material: "Text START to +49 151 2345678" is a much better call to action than "Text START WEEKLY-DEALS ...".

If you have not set a default list, bare start/stop keywords are ignored — so set one before printing QR codes on your packaging.

PUT /api/v1/lists/{list_id}
{
"is_default": true
}

Setting a new default automatically unsets the previous one.

START / STOP Keywords

SendSeven automatically processes opt-in and opt-out keywords on all messaging channels — WhatsApp, Telegram, Facebook Messenger, Instagram, and SMS. No bot or flow setup is required; this works out of the box. (Email works differently — see Double Opt-In below.)

Keywords are case-insensitive (STOP, Stop, and stop all work), and they are processed before any bot or flow: even if an AI assistant or automation is active in the conversation, an opt-in/opt-out keyword is always handled — and answered — by the subscription system, never by the bot.

Opt-in keywords

MessageEffect
start or subscribeSubscribe to the default list
start <slug> or subscribe <slug>Subscribe to the list with that slug (e.g. start weekly-deals)

After subscribing, the contact receives the list's welcome message — configurable per list, with this default:

Welcome! You've successfully subscribed to our updates. Reply 'stop' to unsubscribe at any time.

Opt-out keywords

MessageEffect
stopUnsubscribe from the default list
stop <slug>Unsubscribe from the list with that slug (e.g. stop weekly-deals)
stop allUnsubscribe from every list on that channel
unsubscribe, cancel, stopp, abbestellen, arret / arrêtTotal opt-out — unsubscribe from every list on that channel (same as stop all)

The multilingual total opt-out keywords (English, German, French) must be the entire message on chat channels — a message that merely contains the word cancel in a sentence is not an opt-out.

After unsubscribing, the contact receives the list's goodbye message — configurable per list, with this default:

You've been unsubscribed. Reply 'start' to subscribe again.

SMS compliance keywords

On SMS, regulatory requirements are stricter: the total opt-out keywords (STOP, UNSUBSCRIBE, CANCEL, STOPP, ABBESTELLEN, ARRET/ARRÊT) are matched as whole words anywhere in the message and unsubscribe the contact from all SMS lists at once. The contact receives a confirmation and can re-subscribe at any time by replying START.

Opt-outs are always honored

Keyword opt-outs are processed before everything else — including bots, AI assistants, and flows — and cannot be disabled. Campaigns automatically exclude unsubscribed contacts — you don't need to filter them yourself.

The fastest way to get subscribers is a link (or QR code) that opens the messenger with the opt-in message already filled in — the user just hits send. The Promotion tools section on the Widgets page generates these links, QR codes, and ready-made promo images for all your channels. Under the hood they work like this:

ChannelLink formatHow the list is selected
WhatsApphttps://wa.me/<number>?text=startPre-filled message text (start or start <slug>)
Telegramhttps://t.me/<bot>?start=newsletter_<list_id>The start parameter is delivered with the user's first tap on "Start"
Messengerhttps://m.me/<page_id>?ref=newsletter_<list_id>The ref parameter arrives with the first message
Instagramhttps://ig.me/m/<username>Opens a DM thread — for direct contact, not newsletter opt-ins (see note)
SMSsms:<number>?&body=startPre-filled message body
Instagram is a contact channel, not a newsletter channel

Instagram's platform policies do not allow newsletter-style bulk messaging, so there is no subscribe flow for Instagram. Use Instagram links to start conversations ("Contact us on Instagram"); opt-out keywords still work there as everywhere else.

Email has no keyword path — emails sent to your sender address are not processed for start keywords. Collect email subscribers with the newsletter signup widget instead, which puts them through double opt-in.

Telegram and Messenger deep-link parameters can carry one or more list references (list IDs or slugs separated by _), so a single tap can subscribe a contact to multiple categories. For lists you don't want joinable by link, disable auto_subscribe_via_deeplink in the list's newsletter settings.

You can also fetch a ready-made signup link and QR code for any newsletter list via the API:

GET /api/v1/lists/{list_id}/signup-options?include_qr=true

Double Opt-In (Email)

Email works differently from the messenger channels: there are no inbound keywords. Subscribers sign up through the newsletter signup widget on your website (or via the API), and SendSeven supports double opt-in: the contact receives a confirmation email with a link and only becomes subscribed after clicking it. Until then the subscription is pending and the contact receives no campaigns.

  • Confirmation links are valid for 24 hours.
  • The confirmation email uses a system default template that you can copy and customize per workspace under Reach → Email → Double opt-in templates.
  • Double opt-in is strongly recommended for email (and legally required in some jurisdictions, e.g. Germany).

Messenger channels don't need double opt-in in the same way: the opt-in keyword is itself sent from the user's verified account (their phone number, Telegram account, or Meta profile), which makes it a verifiable, user-initiated action.

Channel Identifiers: What You Can Import

Every subscription is tied to a contact method — the identifier used to reach the contact on that channel. The identifiers differ fundamentally between channels, and that determines what you can import:

ChannelIdentifierImportable?
WhatsAppPhone number (E.164)✅ Yes
SMSPhone number (E.164)✅ Yes
EmailEmail address✅ Yes
TelegramChat ID (scoped to your bot)❌ No
Facebook MessengerPSID (scoped to your page)❌ No
InstagramIG-scoped user ID (scoped to your account)❌ No

Importing WhatsApp, Email, and SMS subscribers

Phone numbers and email addresses are global identifiers — they mean the same thing everywhere. If you already have opted-in contacts from another system, you can import them via Contact Import and set their list subscriptions in the same request:

POST /api/v1/contacts/import

Pass subscriptions to subscribe imported contacts to lists per channel:

[
{ "channel_type": "whatsapp", "list_id": "<list_id>" },
{ "channel_type": "email", "list_id": "<list_id>" }
]

Imports that create subscriptions require you to confirm that you have the contacts' opt-in (optin_confirmed=true). The subscription's opt-in method is recorded as import — keep your own proof of the original consent (signup form, order checkbox, etc.).

Why Telegram, Messenger, and Instagram IDs cannot be imported

These platforms don't expose phone numbers or global user IDs to businesses. Instead they use scoped IDs:

  • Messenger assigns each user a page-scoped ID (PSID) — the same person has a different ID for every Facebook page they talk to.
  • Instagram works the same way with IG-scoped user IDs per professional account.
  • Telegram identifies users by a chat ID that only your specific bot can message.

A scoped ID from another system (or another page/bot) is meaningless for your channel — there is no way to translate it. The ID for your channel only comes into existence when the user messages you first. This is deliberate anti-spam design by Meta and Telegram: businesses cannot buy or transfer messenger audiences; every subscriber must initiate contact themselves.

That's why growing these channels is all about getting the first inbound message — deep links, QR codes, "Message us" buttons, and website widgets that open the conversation with the opt-in keyword pre-filled. As soon as the user's first message arrives, SendSeven creates the contact method automatically and processes the opt-in.

Opt-In Methods Reference

Each subscription records how consent was obtained:

opt_in_methodMeaning
keywordContact sent a START/subscribe keyword or used a deep link
widgetSignup via the website newsletter widget
double_opt_inConfirmed via double opt-in email link
single_opt_inDirect signup without confirmation step
importImported with optin_confirmed=true — consent obtained outside SendSeven
apiCreated via the API
manualAdded manually by a team member

Next Steps

  • Generate links, QR codes, and promo images: the Promotion tools section on the Widgets page in the app
  • Send your first campaign: Messaging Campaigns · Email Campaigns
  • Collect signups on your website: newsletter widget (Widgets → Create Widget)