Skip to main content

Make.com

Make.com logo

Make.com (formerly Integromat) is a visual automation platform for building multi-step "scenarios." The official SendSeven Make app provides unified messaging for WhatsApp, Telegram, SMS, Messenger, Instagram & Email — automate conversations, contacts and campaigns from one API. It lets you send messages, upload attachments, manage contacts, conversations and contact methods, send WhatsApp templates, and trigger scenarios from real-time webhook events.

Early access via invitation link

The official SendSeven app is currently completing Make's public review. You don't have to wait — you can add it to your Make account right now using our invitation link:

Add SendSeven to Make.com →

Once the app is published in Make's app directory you'll be able to find it by searching for SendSeven when adding a module. Until then, the invitation link above is the way to install it.

Connect your account

The SendSeven app offers two connection types — every module and trigger accepts either one, so pick whichever fits your setup when you create the connection:

  1. When you add a SendSeven module to a scenario, click Create a connection and choose SendSeven OAuth2.
  2. You're redirected to SendSeven at app.sendseven.com to authorize the app.
  3. Grant the requested permissions; the connection is saved and the access token is refreshed automatically.

That's all an end user does — just click Authorize. There is no client ID or secret to enter; the published app already carries SendSeven's OAuth client.

If you'd rather authorize against your own OAuth app (so consent screens and token audit records carry your app's identity), expand Show advanced settings on the connection and fill in Client ID and Client secret from Settings → OAuth apps. Both fields are optional — left empty, the connection falls back to the SendSeven-managed client. Whichever client you use, the redirect URI to whitelist is https://www.make.com/oauth/cb/app.

This is an OAuth 2.0 Authorization Code + Refresh Token connection. Access tokens are short-lived (1 hour) and Make.com renews them automatically using the refresh token, so the connection stays valid until you disconnect the app.

For maintainers — OAuth client setup

The OAuth connection runs on one confidential OAuth client owned by SendSeven, whose client_id/client_secret are stored server-side in the Make app's Common data. This client is already registered, public, and verified (write scopes unlocked) and its client_id ships pre-filled in the app's common block. The only remaining manual step is pasting the client_secret:

  1. (Reference / re-registration only) In SendSeven, go to Settings → OAuth Apps → Create. Set the name to Make.com, the allowed scopes to the list the app requests (including openid and offline_access), and add this exact redirect URI to the whitelist:

    https://www.make.com/oauth/cb/app

    This is Make's global OAuth callback for custom apps (legacy Integromat: https://www.integromat.com/oauth/cb/app). SendSeven exact-matches the redirect URI on authorization, so it must be character-for-character identical.

  2. Copy the generated client_id and client_secret (the secret is shown only once).

  3. In the Make app editor open the connection's Common data and set clientSecret to the real secret. The clientId is already populated. Never paste the client_secret into docs, code, or version control — Common data is the only place it belongs; Make encrypts it at rest and hides it from end users. The confidential-client token exchange (POST /oauth-apps/token) requires this secret, so OAuth will not complete until it is set.

Public, unverified apps are limited to OIDC + read-only scopes; to grant write scopes, keep the app organization-private or submit it for verification (this client is already verified).

SendSeven API Token (simplest for developers)

  1. Log in at app.sendseven.com and go to Settings → API Tokens.
  2. Create a token with the scopes your scenario needs (format s7_api_…; legacy msgapi_… also accepted).
  3. When you add a SendSeven module, click Create a connection, choose SendSeven API Token, and paste the token.

Both connection types send the token as a Bearer header and validate on save by calling GET /users/me, which accepts both personal API tokens and OAuth access tokens. You can use either connection type with any module or webhook in the app.

Modules

Modules are the action and search steps you add to a scenario. All calls go to https://api.sendseven.com/api/v1.

Actions

ModuleDescription
Send a messageSend a message on a channel using one of three addressing modes: Recipient + channel (explicit external recipient), Existing conversation (reply to a conversation_id), or Contact + channel (resolve the conversation from a contact). Attachments are an array field — map or add one attachment ID per item (POST /messages).
Send a WhatsApp templateSend a pre-approved WhatsApp Business template to a contact (positional or named variables)
Upload an attachmentUpload a binary file (multipart POST /attachments/upload, max 50 MB). Returns an attachment ID for Send a message.
Upload an attachment from a URLFetch a public http(s) URL server-side and store it (POST /attachments/from-url, max 50 MB, stricter MIME allowlist, SSRF-protected). Returns an attachment ID.
Create a contactCreate a new contact (POST /contacts). Custom fields and platform IDs are set afterward via Set a custom field / Add a contact method.
Update a contactUpdate an existing contact's core fields — name, email, phone, languages, avatar (PATCH /contacts/{id}). Fields you leave empty are omitted from the request rather than blanked.
Delete a contact (GDPR)Permanently delete a contact (DELETE /contacts/{id}); associated conversations are anonymized, billing records preserved. Cannot be undone.
Set a custom field on a contactSet a custom field value on a contact (POST /contacts/{id}/fields/{field_id}); the field is picked from your tenant's definitions
Add a contact methodAdd a contact method — phone, email, whatsapp_id, telegram_id, messenger_id, instagram_id (POST /contacts/{id}/methods). Messenger/Instagram IDs are channel-scoped and require a channel.
Delete a contact methodDelete a contact method (DELETE /contacts/{id}/methods/{method_id}); the next method of the same type is auto-promoted to primary if the deleted one was primary
Add a tag to a contactAdd a tag to a contact for organization and segmentation (POST /contacts/{id}/tags/{tag_id})
Remove a tag from a contactRemove a tag from an existing contact (DELETE /contacts/{id}/tags/{tag_id})
Close a conversationClose a conversation, with optional notes and AI summarization
Assign a conversationAssign a conversation to a team member

Searches

ModuleDescription
Get a contactRetrieve a single contact by ID, including contact methods, tags, and custom fields (GET /contacts/{id})
Search contactsSearch contacts by name, email address, or phone number
Get a conversationRetrieve a single conversation by its unique ID
Search conversationsSearch conversations by search term, contact, status (open / snoozed / closed), reply state, or channel type. All filters are applied server-side; Status, Channel type and Needs reply each default to Any, which omits the filter.
List WhatsApp templatesList your WhatsApp message templates (GET /whatsapp-templates), optionally filtered by channel and approval status

Dropdown fields in these modules (channels, tags, team members, custom fields, WhatsApp channels and templates) are populated dynamically from your account, so you pick real values instead of pasting IDs. All three search modules default Limit to 10 and page through results automatically when you raise it.

Universal

ModuleDescription
Make an API callCall any SendSeven API endpoint with the connection's credentials — pick the method, enter a path relative to https://api.sendseven.com/api/v1, and optionally supply headers, query string and body. Use this for endpoints that don't yet have a dedicated module.

Webhook triggers

The app ships a single instant trigger, Watch events, which starts a scenario the moment a selected event happens in SendSeven. Add it as the first module of a scenario, then pick one or more event types in the Events to watch field. Add multiple instances of the module to watch different event groups in separate scenarios.

Supported events:

GroupEvents
Messagesmessage.received, message.sent, message.delivered, message.failed, message.read
Emailemail.received, email.sent, email.delivered, email.bounced, email.opened, email.complained
Conversationsconversation.created, conversation.closed, conversation.assigned, conversation.reopened
Contactscontact.created, contact.updated, contact.deleted, contact.subscribed, contact.unsubscribed
Engagementlink.clicked
Campaign messagescampaign.message.sent, campaign.message.delivered, campaign.message.read, campaign.message.failed
Campaign emailscampaign.email.sent, campaign.email.delivered, campaign.email.bounced, campaign.email.opened, campaign.email.complained

When the trigger is enabled, Make.com registers a webhook subscription via POST /webhook-endpoints pointing at the scenario's Make webhook URL, with subscribed_events set to your selection. Removing or disabling the trigger deletes the subscription (DELETE /webhook-endpoints/{id}).

Ownership-verification challenge

To prove you control the URL it delivers to, SendSeven verifies every new endpoint. Immediately after registration it posts a one-time challenge to the Make webhook URL — {"type":"sendseven_verification","challenge":"…"} with header X-Sendseven-Event: verification. The official Watch events trigger answers this automatically: it responds 200 and echoes the challenge back, so the endpoint verifies and activates, and the challenge itself is not emitted as a scenario event.

This is why a hand-rolled generic Make.com Custom webhook module can't be used as a substitute — it has no way to echo the challenge, so the endpoint never verifies and stays paused. Use the Watch events trigger instead.

Required scopes

ModuleScopes
Send a messagemessages:create
Upload an attachment / Upload an attachment from a URLmessages:create
Create a contact / Update a contactcontacts:create, contacts:update
Get a contact / Search contactscontacts:read
Delete a contact (GDPR)contacts:delete
Set a custom field on a contactcontacts:update (custom-field dropdown reads contacts:read)
Add / Delete a contact methodcontacts:update
Add / Remove a tagcontacts:update (tag dropdown reads contacts:read)
Get a conversation / Search conversationsconversations:read
Close / Assign a conversationconversations:update
Send a WhatsApp templatemessages:create
List WhatsApp templateschannels:read
Watch events (instant trigger)webhooks:create, webhooks:delete

Example scenario

Auto-respond to incoming WhatsApp messages

  1. Watch events — select message.received to trigger on each inbound message.
  2. Router — branch on message content or channel.
  3. Send a message — reply using Existing conversation mode with the conversation ID from the trigger, or Add a tag to a contact to flag the conversation for a human.

Next steps

  • Zapier — no-code automation across 7,000+ apps
  • n8n — self-hostable workflows with an AI-agent tool
  • Webhooks — the event layer behind the Watch events trigger
  • Authentication — API tokens and OAuth