Sentloop
Docs

What every platform allows

Generated from the same code the app runs on, so it cannot drift from real behaviour.

Generated from the provider registry by npm run docs:platforms. Do not edit by hand. The source of truth is src/lib/platforms/, which is the same code the app reads at runtime, so nothing here can drift away from real behaviour.

What this document is for

Messaging platforms differ enormously in what they let an outside application do. Some permit automated sending through an approved integration. Most permit only drafting, reminders, sharing, or an action you confirm yourself.

Sentloop declares each capability explicitly, per platform, against that platform's current official developer documentation. Nothing is described as automatic unless the platform's own rules actually allow it.

Sentloop intentionally does not bypass, evade, reverse-engineer, scrape, or browser-automate any platform, and does not use unofficial APIs. Where a platform says no, the answer is no, and the app says so.

The capability vocabulary

  • Automatic sending (AUTOMATIC_SEND) - Sentloop delivers the message itself through the platform’s official API. You do not have to be there.
  • Scheduled delivery (SCHEDULE) - Sentloop holds the message and delivers it at the moment you chose. None of these platforms offer third-party apps a native scheduled-send endpoint, so this is Sentloop’s own queue, and it only works where automatic sending does.
  • Draft in advance (DRAFT_MESSAGE) - Sentloop writes the personalised message before the day, so it is ready and waiting.
  • Open the composer (OPEN_COMPOSER) - An official link opens the app on the right conversation. Where the platform allows it, the message is filled in for you.
  • Reminder (NOTIFICATION) - Sentloop tells you in the app before and on the day, so nothing slips past.
  • Import contacts (CONTACT_IMPORT) - Pulls in people who are already reachable through the connection. Sentloop never looks anyone up or discovers new people.

A capability is declared as one of:

  • Supported - works today, within the conditions listed.
  • Conditional - possible, but only once specific requirements are met. The requirements are always listed.
  • Not available - the platform does not permit it. Sentloop does not work around this.

Capability matrix

Platform Automatic sending Scheduled delivery Draft in advance Open the composer Reminder Import contacts
Telegram ⚠ Conditional ⚠ Conditional ✓ Supported ✓ Supported ✓ Supported × Not available
Discord ✓ Supported ✓ Supported ✓ Supported ⚠ Conditional ✓ Supported × Not available
Slack ✓ Supported ✓ Supported ✓ Supported ⚠ Conditional ✓ Supported × Not available
Mastodon ✓ Supported ✓ Supported ✓ Supported ✓ Supported ✓ Supported × Not available
Bluesky ⚠ Conditional ⚠ Conditional ✓ Supported ⚠ Conditional ✓ Supported × Not available
WhatsApp ⚠ Conditional ⚠ Conditional ✓ Supported ✓ Supported ✓ Supported × Not available
iMessage ⚠ Conditional ⚠ Conditional ✓ Supported ✓ Supported ✓ Supported × Not available
Email ✓ Supported ✓ Supported ✓ Supported ✓ Supported ✓ Supported × Not available
Instagram ⚠ Conditional ⚠ Conditional ✓ Supported ⚠ Conditional ✓ Supported × Not available
Messenger ⚠ Conditional ⚠ Conditional ✓ Supported ⚠ Conditional ✓ Supported × Not available
Snapchat × Not available × Not available ✓ Supported ⚠ Conditional ✓ Supported × Not available
Custom webhook ⚠ Conditional ⚠ Conditional ✓ Supported × Not available ✓ Supported × Not available
Sandbox ✓ Supported ✓ Supported ✓ Supported × Not available ✓ Supported ✓ Supported

Where automatic sending stands

Telegram is the only integration that can send automatically with no conditions attached, and even then within a scope worth understanding: messages are sent by a bot you create, not from your personal account, and only to people who have opened that bot and pressed Start.

WhatsApp can send automatically, but only through the WhatsApp Business Platform with a template Meta approved in advance, billed per message. A personal WhatsApp account cannot be automated by any third-party app.

iMessage, Instagram, and Messenger cannot send automatically at all. For these, Sentloop prepares the message, reminds you, and opens the app with everything ready. You press send.

What Sentloop deliberately does not do

Each of these was considered and rejected. Every one would have made a demo look better and the product worse.

  • No UI scripting or app automation. No AppleScript against Messages.app, no Shortcuts automation, no simulated taps, no headless browser driving a web client. That is the only way to "auto-send" an iMessage from a third-party app, and it is out of bounds.
  • No unofficial or reverse-engineered APIs. Documented public interfaces only.
  • No scraping and no recipient discovery. Sentloop can only reach people you entered yourself, or who already started a conversation with your own bot. There is no lookup, no directory, no enumeration.
  • No bulk or unsolicited messaging. One message per person per occasion, enforced by a database constraint, under a daily cap you control.
  • No pretending. A provider that cannot send returns READY_TO_SEND, and the interface says so. Nothing is recorded as sent unless an official API confirmed it, or you told Sentloop you sent it yourself.

Per-platform detail

Telegram

Your own account · capabilities last checked against official documentation on 2026-08-13

In one line: Sends from your own Telegram account to an @username. No bot, no chat id.

What happens on the day: Signed in, Sentloop sends it from your account at the time you chose. Otherwise it copies the message and opens their conversation for you to paste.

Capabilities

Automatic sending - ⚠ Conditional

Signed in to your own account, Sentloop sends to an @username automatically, from your name. Otherwise it opens the chat with the message copied for you to paste.

  • Needs you signed in through Telegram’s own client API - phone number and the code they text you.
  • That produces a session which is your Telegram account. Sentloop encrypts it and never shows it to the browser, but it is the most powerful thing here: everywhere else the worst case is a missed message, and this is your account.
  • Signing out revokes the session on Telegram’s side, not just locally.
  • Telegram allows this. They publish the protocol and sanction third-party clients, so it is not a bypass.

Source: Telegram Bot API - sendMessage

Scheduled delivery - ⚠ Conditional

Sentloop holds the message and sends it at the moment you chose, once you are signed in.

  • Without signing in, it schedules the reminder and the handoff instead.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ✓ Supported

Opens your Telegram directly on their conversation, with the message already on your clipboard.

  • Telegram has no link that can put words in a private chat, so the text is copied rather than pre-filled.

Source: Telegram deep links

Reminder - ✓ Supported

Sentloop reminds you when it is time.

Import contacts - × Not available

Sentloop does not read your Telegram contacts. Add the @usernames you want yourself.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Opens your Telegram on their chat with the message already copied. Paste and send - it comes from you.

Worth knowing

  • No bot, no BotFather, no token, no chat id - just their @username.
  • Messages come from your own account, in the conversation you already have with them.
  • Sign in and Sentloop sends them itself. Do not, and it opens the chat with the message copied - everything works either way.
  • The session Sentloop stores is full access to your Telegram. It is encrypted here, never shown to the browser, and signing out revokes it on Telegram’s side.
  • Telegram permits this: they publish the client protocol and allow third-party clients. Get your own API ID at my.telegram.org.

Limits Sentloop respects

  • 1/second per account, 1/minute per recipient
  • Maximum message length: 4096 characters

Official documentation


Discord

Discord webhook · capabilities last checked against official documentation on 2026-08-11

In one line: Posts automatically to a Discord channel through a webhook you create. Free, no review.

What happens on the day: Sentloop posts the message to your Discord channel itself, at the time you chose. You do not need to do anything.

Capabilities

Automatic sending - ✓ Supported

Discord’s Execute Webhook endpoint posts your message with no action from you.

  • Posts to the one channel the webhook belongs to. This is a channel post, not a private DM.
  • Messages show the webhook’s name and avatar, not your Discord account.
  • Anyone holding the webhook URL can post to that channel - treat it as a secret.

Source: Discord - Execute Webhook

Scheduled delivery - ✓ Supported

Sentloop holds the message and posts it at the scheduled moment.

  • Discord has no scheduled-post endpoint for webhooks, so Sentloop’s own queue does this.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

Sentloop can open Discord, but not a specific channel with text ready.

  • Discord has no official link that pre-fills a message, so Sentloop copies it to your clipboard.

Reminder - ✓ Supported

Sentloop reminds you before anything is posted.

Import contacts - × Not available

A webhook cannot read a server’s member list. Add the people you want yourself.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Discord has no link that carries the message, so Sentloop copies it to your clipboard first. Paste and send.

Worth knowing

  • Create a webhook in Discord under Server Settings → Integrations → Webhooks, then paste the URL here.
  • This posts to a channel, so everyone in that channel sees it. Use a private channel if the message is personal.
  • To @mention someone, put their numeric Discord user ID in the contact’s address field and Sentloop will prefix the message with a mention.
  • Discord asks senders to stay under roughly 5 requests every 2 seconds per webhook. Sentloop stays well under that.
  • Sentloop never reads your Discord messages. A webhook is write-only by design.

Limits Sentloop respects

  • 2/second per account, 30/minute per recipient
  • Maximum message length: 2000 characters

Official documentation


Slack

Slack incoming webhook · capabilities last checked against official documentation on 2026-08-11

In one line: Posts automatically to a Slack channel through an incoming webhook. Free, no review.

What happens on the day: Sentloop posts the message to your Slack channel itself, at the time you chose. You do not need to do anything.

Capabilities

Automatic sending - ✓ Supported

Slack incoming webhooks post your message with no action from you.

  • Posts to the single channel chosen when the webhook was created. This is not a private DM.
  • Messages appear from the Slack app you created, not from your own account.

Source: Slack - Sending messages using incoming webhooks

Scheduled delivery - ✓ Supported

Sentloop holds the message and posts it at the scheduled moment.

  • Slack’s own chat.scheduleMessage needs a bot token; the webhook route has no scheduling, so Sentloop’s queue does it.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

Sentloop can open Slack, but not a channel with the text ready.

  • Slack has no official link that pre-fills a message, so Sentloop copies it to your clipboard.

Reminder - ✓ Supported

Sentloop reminds you before anything is posted.

Import contacts - × Not available

An incoming webhook cannot read your workspace directory. Add people yourself.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Slack has no link that carries the message, so Sentloop copies it to your clipboard first. Paste and send.

Worth knowing

  • Create a Slack app at api.slack.com/apps, turn on Incoming Webhooks, add one to a channel, and paste the URL here.
  • The webhook is locked to the channel you chose at install time. To post elsewhere, create another webhook.
  • To @mention someone, put their Slack member ID (starts with U) in the contact’s address field.
  • Slack asks senders to stay around one message per second per webhook. Sentloop stays under that.
  • Sentloop never reads your Slack messages. An incoming webhook is write-only.

Limits Sentloop respects

  • 1/second per account, 20/minute per recipient
  • Maximum message length: 3000 characters

Official documentation


Mastodon

Mastodon API · capabilities last checked against official documentation on 2026-08-11

In one line: Posts automatically from your own account as a direct-visibility status.

What happens on the day: Sentloop posts the message from your Mastodon account itself, visible only to the person you mention. You do not need to do anything.

Capabilities

Automatic sending - ✓ Supported

The official statuses endpoint posts from your account with no action from you.

  • Sent as a status with visibility “direct”: only the mentioned account sees it, but it is a post, not an encrypted DM.
  • The recipient’s handle appears in the message text - that is how Mastodon addresses it.
  • Needs an access token with the write:statuses scope from your own server.

Source: Mastodon - POST /api/v1/statuses

Scheduled delivery - ✓ Supported

Sentloop holds the message and posts it at the scheduled moment.

  • Mastodon also has its own scheduled_at parameter; Sentloop uses its own queue so you can still edit or cancel right up to the moment.

Source: Mastodon - scheduled statuses

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ✓ Supported

Mastodon’s official share link opens the composer with your message already written.

Source: Mastodon share intent

Reminder - ✓ Supported

Sentloop reminds you before anything is posted.

Import contacts - × Not available

Sentloop does not read your follower list. Add the people you want yourself.

Composer handoff

Available. The official link carries the message text with it. Opens the Mastodon composer with your message already written. Set it to Direct before posting.

Worth knowing

  • Create a token on your own server under Preferences → Development → New application, with the write:statuses scope.
  • A direct-visibility status is not an encrypted DM. Your server admin and the recipient’s server admin can read it, exactly as with any Mastodon post.
  • The recipient’s handle has to appear in the text for Mastodon to deliver it. Sentloop adds it automatically if your message does not already include it.
  • Most servers cap posts at 500 characters. Some allow more; Sentloop uses 500 to stay safe.
  • Sentloop only ever posts. It does not read your timeline, follows, or notifications.

Limits Sentloop respects

  • 1/second per account, 10/minute per recipient
  • Maximum message length: 500 characters

Official documentation


Bluesky

Bluesky chat API · capabilities last checked against official documentation on 2026-08-11

In one line: Sends a real private DM from your own account through the official chat API.

What happens on the day: Sentloop sends the direct message from your Bluesky account itself, at the time you chose. You do not need to do anything.

Capabilities

Automatic sending - ⚠ Conditional

The official chat API sends a private DM from your account with no action from you.

  • The recipient’s privacy settings must allow direct messages from you. Many people limit DMs to accounts they follow.
  • Sign in with an app password, not your account password.
  • Text only - Bluesky DMs do not carry images or attachments.

Source: Bluesky - chat.bsky.convo.sendMessage

Scheduled delivery - ⚠ Conditional

Sentloop holds the message and sends it at the scheduled moment.

  • Only works where the recipient accepts DMs from you, same as above.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

Sentloop can open their Bluesky profile, but not a chat with text ready.

  • Bluesky has no link that opens a conversation pre-filled, so Sentloop copies the message to your clipboard.

Reminder - ✓ Supported

Sentloop reminds you before anything is sent.

Import contacts - × Not available

Sentloop does not read your follows. Add the people you want yourself.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Opens their profile. Bluesky has no pre-filled chat link, so Sentloop copies the message to your clipboard.

Worth knowing

  • Create an app password in Bluesky under Settings → Privacy and security → App passwords. Never paste your real password.
  • Bluesky DMs are private between the two accounts, but they are not end-to-end encrypted.
  • If someone limits DMs to people they follow, Sentloop will report that rather than pretending the message went out.
  • Bluesky DMs are text only.
  • Sentloop only sends. It does not read your conversations or your timeline.

Limits Sentloop respects

  • 2/second per account, 10/minute per recipient
  • Maximum message length: 1000 characters

Official documentation


WhatsApp

WhatsApp Cloud API · Click to Chat · capabilities last checked against official documentation on 2026-08-09

In one line: Prepares the message and opens WhatsApp for you. Automatic sending needs a Business account and an approved template.

What happens on the day: Sentloop opens WhatsApp with the message already written, and you press send. If you have connected the Cloud API with an approved template, Sentloop delivers it for you instead.

Capabilities

Automatic sending - ⚠ Conditional

Possible only through the WhatsApp Business Platform, using a template Meta approved beforehand.

  • A WhatsApp Business Account and a registered business phone number. Personal accounts cannot be automated.
  • A message template submitted to and approved by Meta in advance.
  • Meta charges per delivered template message, priced by category and recipient country.
  • Meta requires recipients to have opted in to messages from your business number.
  • A free Meta test number reaches only five recipients, each verified in advance by a code sent to that handset. A registered production number has no such list and can message anyone who opted in.

Source: Cloud API - send messages

Scheduled delivery - ⚠ Conditional

Sentloop can deliver at a chosen time, but only where automatic sending above is set up.

  • Requires a connected Cloud API account and an approved template.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ✓ Supported

The official wa.me Click to Chat link opens the conversation with your message already typed.

Source: Click to Chat

Reminder - ✓ Supported

Sentloop reminds you before and on the day.

Import contacts - × Not available

WhatsApp does not expose a contact list to third-party apps. Add people yourself.

Composer handoff

Available. The official link carries the message text with it. Opens the conversation with your message already typed. Check it, then press send.

Worth knowing

  • Your personal WhatsApp account cannot be automated by Sentloop or by any other third-party app. That is a WhatsApp rule, not a Sentloop limitation.
  • Without Cloud API credentials, Sentloop uses the official Click to Chat link: the message is written for you and you press send.
  • Business-initiated messages outside the 24-hour customer service window must use a Meta-approved template.
  • Meta bills per delivered template message. Rates depend on the template category and the recipient country.
  • The Business Platform is built for businesses messaging customers. Check Meta’s terms before using it for personal greetings.

Limits Sentloop respects

  • 20/second per account, 4/minute per recipient
  • Maximum message length: 1024 characters

Official documentation


iMessage

Prepare & hand off (no send API) · capabilities last checked against official documentation on 2026-08-12

In one line: Drafts the message and opens Messages with it ready. Apple has no server-side send API.

What happens on the day: Sentloop reminds you, shows the finished message, and opens Messages with the text already written. One tap and it is sent.

Capabilities

Automatic sending - ⚠ Conditional

Sentloop is not on a Mac, so it cannot reach Messages. Pair the Mac agent, or it will prepare each message for you to send.

  • Needs a device of yours running Shortcuts: a Mac, or an iPhone. There is no server-side route, and there never has been.
  • On iPhone, a Personal Automation runs a Shortcut that asks Sentloop what is due and sends it. No Mac, nothing installed, and the phone is already awake. See agent/iphone.md.
  • Run Sentloop on your Mac and it sends with no setup at all. Running elsewhere, pair the Mac agent or the iPhone Shortcut.
  • If nothing can reach Messages when the moment comes, Sentloop hands you the message rather than pretending it went.

Source: Apple - Run shortcuts from the command line

Scheduled delivery - ⚠ Conditional

Sentloop holds the message and releases it to your Mac agent at the scheduled moment.

  • Depends on the agent running. Apple has nothing that accepts a message in advance, so the timing is Sentloop’s, not Apple’s.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ✓ Supported

Apple’s documented sms: URL scheme opens Messages with the recipient and the message already filled in.

  • Works on iPhone, iPad, and Mac.

Source: Apple URL scheme reference

Reminder - ✓ Supported

Sentloop reminds you before and on the day.

Import contacts - × Not available

Sentloop does not read your address book. Add the people you want yourself.

Composer handoff

Available. The official link carries the message text with it. Opens Messages with the text already written. Check it, then press send.

Worth knowing

  • Automatic sending needs a Mac. Run Sentloop on one and it works with no setup; otherwise see agent/README.md.
  • It uses the Messages app’s own AppleScript dictionary - Apple’s documented scripting interface, not synthesised keystrokes or clicking buttons.
  • macOS asks permission the first time and you can revoke it any time in System Settings → Privacy & Security → Automation.
  • Sentloop’s servers never contact Apple and never hold your Apple credentials. The agent pulls from Sentloop; Sentloop cannot reach into your Mac.
  • No Mac, or Mac asleep? Everything still works, as the handoff: Sentloop opens Messages with the text ready and you press send.
  • Apple Messages for Business is a separate thing entirely: approved brands, registered accounts, opt-in entry points. It is not a route for personal messages.
  • Sentloop does not script Messages.app or simulate taps. It calls a documented automation action, which is a different thing.
  • The handoff uses Apple’s documented sms: URL scheme and works on iPhone, iPad, and Mac.

Limits Sentloop respects

  • 1/second per account, 1/minute per recipient
  • Maximum message length: 2000 characters

Official documentation


Email

The Mail app on this Mac · capabilities last checked against official documentation on 2026-08-21

In one line: Sentloop sends the email itself, from its own server. Your devices can be off.

What happens on the day: Sentloop sends the email at the time you chose, from its server. Nothing of yours needs to be switched on.

Capabilities

Automatic sending - ✓ Supported

Sentloop puts the email on the wire from its own server. No app, no device, nothing of yours running.

  • The sending address is configured once by whoever deploys Sentloop. Nobody using it enters anything.
  • The email carries your name, and a reply goes to your own address.
  • The provider confirms the send, and Sentloop records exactly that.

Source: RFC 5321 - Simple Mail Transfer Protocol

Scheduled delivery - ✓ Supported

Sentloop holds the message and sends it at the moment you chose, whether or not anything of yours is on.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ✓ Supported

The mailto: link opens your mail client with everything filled in.

Reminder - ✓ Supported

Sentloop reminds you before anything is sent.

Import contacts - × Not available

Import people from Contacts instead - that is where the addresses are.

Composer handoff

Available. The official link carries the message text with it. Opens a new email with the address and message already filled in.

Worth knowing

  • This is the only channel in Sentloop that reaches an ordinary person with nothing of yours switched on. Email is a protocol rather than somebody’s product, so there is no gatekeeper, no approved template, and no reply window.
  • The From address belongs to this deployment, because that is what is authenticated to send. Your name is on the message and your address is the Reply-To, so a reply reaches you.
  • Messages come from your own address, so a reply goes to you and not to a service.
  • Mail’s send command reports success or failure, so Sentloop knows rather than assumes.
  • macOS asks permission the first time; revoke it in System Settings → Privacy & Security → Automation.
  • Sentloop only sends. It never reads your mailbox.

Limits Sentloop respects

  • 2/second per account, 1/minute per recipient
  • Maximum message length: 2000 characters

Official documentation


Instagram

Official Send API inside the 24-hour window · capabilities last checked against official documentation on 2026-08-12

In one line: Prepares the message and opens the chat. Can send through Instagram’s official API only inside a 24-hour reply window.

What happens on the day: If a reply window is open, Sentloop sends through Instagram’s official API. Otherwise it reminds you, copies the message, and opens the conversation for you to send.

Capabilities

Automatic sending - ⚠ Conditional

Only inside the 24-hour window that opens when someone messages your Professional account. Outside it, no third-party app may send an Instagram DM, and Sentloop hands the message to you.

  • You need an Instagram Professional (Business or Creator) account, connected with a token that has instagram_business_manage_messages.
  • That person must have messaged your account within the last 24 hours. That is what opens the window, and only they can open it.
  • You need their Instagram-scoped ID, which Meta only provides through a webhook when they message you. A username cannot be used for sending.
  • The human-agent tag would extend this to 7 days, but Meta forbids using it for automated messages, so Sentloop does not.
  • For a friend’s birthday this window is almost never open. Expect a handoff, and treat an automatic send as the exception.

Source: Messenger Platform & IG messaging policy

Scheduled delivery - ⚠ Conditional

Sentloop holds the message and sends it at the moment you chose, if the window is open then.

  • Depends entirely on whether they have messaged you in the previous 24 hours.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

The official ig.me/m link opens the conversation.

  • The link cannot carry the message text, so Sentloop copies it to your clipboard.

Reminder - ✓ Supported

Sentloop reminds you before and on the day.

Import contacts - × Not available

Instagram does not expose your followers or friends to third-party apps.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Instagram does not let a link carry the message text, so Sentloop copies it to your clipboard first. Paste and send.

Worth knowing

  • The Instagram Messaging API only works for Professional (Business or Creator) accounts, and only to reply to people who messaged that account first.
  • Replies are limited to a 24-hour window that the other person opens. Sentloop cannot see whether it is open, so it tries the official send and falls back to a handoff with Meta’s own reason.
  • Sending needs the Instagram-scoped ID Meta hands you over a webhook. Put that in the channel address to enable the API route; a username enables the handoff only.
  • The human-agent tag extends the window to 7 days but is explicitly for messages typed by a person. Using it for automation is a policy violation, so Sentloop does not offer it.
  • There is no supported way for a third-party app to send a DM from a personal Instagram account. Sentloop will not attempt it.

Limits Sentloop respects

  • 1/second per account, 1/minute per recipient
  • Maximum message length: 1000 characters

Official documentation


Messenger

Official Send API inside the 24-hour window · capabilities last checked against official documentation on 2026-08-09

In one line: Drafts the message and opens the chat. Messenger has no API for sending on your behalf.

What happens on the day: Sentloop reminds you, shows the finished message, copies it to your clipboard, and opens the conversation. You press send.

Capabilities

Automatic sending - ⚠ Conditional

Sentloop sends a Messenger for real, but only inside the 24 hours after that person messages you.

  • They must message your Page or account first. Only they can open that window - there is no API that lets a business start a conversation.
  • The window lasts 24 hours. If the moment falls outside it, Meta refuses and Sentloop hands you the message rather than losing it.
  • A handed-back message is not abandoned: if they write to you within the next week, the window reopens and Sentloop sends it on its own without asking you again.
  • Messages come from a Professional account, never a personal one. Meta has no API for personal Instagram accounts at all.
  • Instagram no longer requires a linked Facebook Page: the Instagram API with Instagram Login authenticates against Instagram directly, and Creator accounts need no Page. The older Facebook Login route still does.
  • Message tags can bypass the window but only for their stated purpose - order updates, event reminders. A birthday greeting is none of them, so Sentloop does not use them.

Source: Messenger Platform & Instagram messaging policy

Scheduled delivery - ⚠ Conditional

Sentloop holds the message and sends it at the moment you chose, if the window is open then.

  • Depends entirely on whether they have messaged you in the previous 24 hours.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

The official m.me link opens the conversation.

  • The link cannot carry the message text, so Sentloop copies it to your clipboard.

Reminder - ✓ Supported

Sentloop reminds you before and on the day.

Import contacts - × Not available

Messenger does not expose your followers or friends to third-party apps.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Messenger does not let a link carry the message text, so Sentloop copies it to your clipboard first. Paste and send.

Worth knowing

  • The Messenger Platform sends from a Facebook Page, not from your personal profile.
  • A Page may only message someone within 24 hours of that person messaging the Page.
  • Sponsored Messages and One-Time Notifications exist for businesses, but neither fits sending a friend a birthday message.
  • There is no supported way for a third-party app to send a Messenger message from your personal account. Sentloop will not attempt it.

Limits Sentloop respects

  • 1/second per account, 1/minute per recipient
  • Maximum message length: 2000 characters

Official documentation


Snapchat

Prepare & hand off (no send API) · capabilities last checked against official documentation on 2026-08-12

In one line: Writes the message and opens Snapchat with it copied. Snap has no API that sends for you.

What happens on the day: Sentloop reminds you, shows the finished message, copies it to your clipboard, and opens Snapchat. You choose the friend and press send.

Capabilities

Automatic sending - × Not available

Snapchat has no API that sends a chat or a snap to a friend. Creative Kit shares content into the app, and the person still chooses the recipient and sends it.

Source: Snap for Developers - Creative Kit

Scheduled delivery - × Not available

Nothing can be handed to Snapchat in advance. Sentloop schedules the reminder instead, so the message is ready at the right moment.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - ⚠ Conditional

Sentloop can open Snapchat on a phone, but cannot open a specific chat or carry the text.

  • Only works on a phone with Snapchat installed. There is no web share link.
  • The link cannot carry the message or the recipient, so Sentloop copies the text to your clipboard first.

Source: Snap for Developers - Creative Kit

Reminder - ✓ Supported

Sentloop reminds you in time to send it yourself.

Import contacts - × Not available

Snapchat does not expose your friend list to third-party apps. Add people yourself.

Composer handoff

Available. The link cannot carry the message text, so Sentloop copies it to the clipboard first. Snapchat has no link that carries a message or opens a specific chat, so Sentloop copies the text to your clipboard. Open the chat, paste, send. Works on a phone with Snapchat installed.

Worth knowing

  • Snap offers no send API of any kind for personal messaging. This is not a limitation Sentloop can engineer around, and trying to would break Snap’s terms.
  • Creative Kit, Snap’s official sharing route, always ends with you choosing the recipient inside Snapchat.
  • Creative Kit is native iOS/Android only, so a desktop browser has nothing to open. Copy the message and send it from your phone.
  • Sentloop never asks for your Snapchat password and never signs in as you.

Limits Sentloop respects

  • 1/second per account, 1/minute per recipient
  • Maximum message length: 1000 characters

Official documentation


Custom webhook

Your own endpoint · capabilities last checked against official documentation on 2026-08-11

In one line: Sends the finished message to an endpoint you control, so you can bridge Sentloop to anything.

What happens on the day: Sentloop POSTs the message to your endpoint at the time you chose, and records whatever your endpoint answers. What happens next is up to your integration.

Capabilities

Automatic sending - ⚠ Conditional

Sentloop delivers the message to your endpoint automatically. Your endpoint decides what happens after that.

  • You provide the endpoint and whatever official access it uses.
  • Sentloop records a send when your endpoint returns 2xx. It cannot verify the message actually arrived on the far platform.
  • This does not grant abilities a platform withholds - your integration must respect that platform’s terms.

Scheduled delivery - ⚠ Conditional

Sentloop calls your endpoint at the scheduled moment.

  • Depends on your endpoint being reachable at that time.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - × Not available

Sentloop does not know what app sits behind your endpoint, so there is nothing to open. Copy and Share still work.

Reminder - ✓ Supported

Sentloop reminds you before anything is sent.

Import contacts - × Not available

Sentloop does not read from your endpoint. Add people yourself.

Composer handoff

Not applicable for this integration.

Worth knowing

  • Point this at an automation tool (Zapier, Make, n8n, Pipedream) or your own server, and bridge to whatever that service officially supports.
  • Sentloop POSTs JSON: { message, recipient, contactName, occasion, occurrenceDate, scheduledAt, messageId }.
  • Set a signing secret and Sentloop adds an X-Sentloop-Signature header - HMAC-SHA256 of the raw body - so your endpoint can confirm the request is genuine.
  • A 2xx response is recorded as sent. Anything else is recorded as a failure, with the status and the first part of the response body.
  • Only HTTPS endpoints are accepted, so the message is never sent in the clear.
  • This is a bridge, not a loophole. It gives your own integration a trigger; it does not give Sentloop permission a platform has withheld.

Limits Sentloop respects

  • 5/second per account, 10/minute per recipient
  • Maximum message length: 4000 characters

Official documentation


Sandbox

Simulated - nothing is delivered · capabilities last checked against official documentation on 2026-08-09

In one line: A simulation for testing. Messages are recorded, never delivered to anyone.

What happens on the day: Sentloop runs the whole pipeline and records the result. No message leaves this machine.

Capabilities

Automatic sending - ✓ Supported

Simulated delivery, recorded in your history as simulated.

  • Nothing reaches a real person on any platform.

Scheduled delivery - ✓ Supported

Simulated delivery at the scheduled moment.

Draft in advance - ✓ Supported

Personalised and ready before the day, for you to review.

Open the composer - × Not available

There is no app to open - this platform is not real.

Reminder - ✓ Supported

Reminders behave exactly as they would for a real platform.

Import contacts - ✓ Supported

Offers three sample people so you can try the flow.

Composer handoff

Not applicable for this integration.

Worth knowing

  • Nothing sent through Sandbox reaches a real person on any platform.
  • Use it to see how preparing, reminding, previewing, and the history log behave before connecting anything real.
  • Every Sandbox delivery is marked as simulated in your message history and audit trail.

Limits Sentloop respects

  • 50/second per account, 60/minute per recipient
  • Maximum message length: 4096 characters

Official documentation

  • Not applicable - this integration is a local simulation.

Adding a platform

  1. Create src/lib/platforms/<name>/index.ts exporting a class that extends MessagingProvider.
  2. Declare every capability in getProfile() against the official docs. If the platform cannot send unattended, declare AUTOMATIC_SEND as UNSUPPORTED and return READY_TO_SEND with an official deep link from sendMessage().
  3. Register it in src/lib/platforms/index.ts.
  4. Run npm run docs:platforms to regenerate this file.

The connections screen, onboarding, contact channel picker, scheduler, review-and-send flow, and this document all read from the registry, so nothing else needs to change.

npm test fails the build if a provider declares AUTOMATIC_SEND as unsupported yet returns SENT, or fails to provide a composer link when it declares OPEN_COMPOSER. Capability claims are enforced, not just documented.