> ## Documentation Index
> Fetch the complete documentation index at: https://docs.senderz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Make.com

> Automate Senderz from Make scenarios — triggers, actions and a universal API-call module, all over the Senderz public API.

[Make](https://www.make.com) (formerly Integromat) is a no-code automation platform. The Senderz app for Make lets you build scenarios that react to Senderz events and act on your workspace — no code, no server.

Every module is backed by the [Senderz Public API](/en/api-reference/introduction), so anything the app does, you can also do directly from the API or a generic HTTP call.

<Note>
  The official Senderz app for Make is rolling out through Make's partner
  review. Until it's listed, you can build the same automations today using
  Make's HTTP modules against the endpoints documented here, and subscribe to
  events via [outbound webhooks](/en/integrations/webhooks-outbound).
</Note>

## Connect your workspace

The Senderz connection in Make authenticates with your **workspace ID** and an **API key**.

<Steps>
  <Step title="Get your workspace ID">
    In Senderz, your Workspace ID is the workspace **slug** shown in
    Settings. You send it as the `X-Sender-Tenant` header.
  </Step>

  <Step title="Mint an API key">
    An owner or admin creates a key from **Settings → Integrations** (or
    `POST /integrations/event-ingest-key`). Copy it — it's the `X-API-Key`.
  </Step>

  <Step title="Create the connection">
    In Make, add a Senderz module, create a new connection, and paste both
    values. Make validates it against `GET /public/me` and shows your
    workspace name on the connection chip.
  </Step>
</Steps>

<Warning>
  Treat the API key like a password. It grants profile management,
  transactional send and webhook management on your workspace. Rotate it if
  it leaks (delete and re-issue from Settings → Integrations).
</Warning>

## Triggers (instant)

Instant triggers fire from Senderz [outbound webhooks](/en/integrations/webhooks-outbound). When you add a trigger, Make registers a webhook subscription for you (via `POST /public/webhooks`) and removes it when you delete the module.

<CardGroup cols={2}>
  <Card title="Profile created" icon="user-plus">
    Fires on `contact.created`.
  </Card>

  <Card title="Profile updated" icon="user-pen">
    Fires on `contact.updated`.
  </Card>

  <Card title="List subscribed / unsubscribed" icon="list-check">
    Fires on `list.subscribed` / `list.unsubscribed`.
  </Card>

  <Card title="Email opened / clicked" icon="envelope-open">
    Fires on `email.opened` / `email.clicked`.
  </Card>

  <Card title="Order & shipment events" icon="truck">
    `order.*` and `shipment.*` for lifecycle automations.
  </Card>

  <Card title="Custom event" icon="bolt">
    Any event you send to `/events/ingest`.
  </Card>
</CardGroup>

See the full [event vocabulary](/en/integrations/webhooks-outbound#event-vocabulary) (29 types).

## Actions

Actions call the Senderz Public API. **Every merchant-facing action is keyed by email**, never a contact UUID — the UUID stays available for advanced callers.

| Module                   | Endpoint                                     | Identity                               |
| ------------------------ | -------------------------------------------- | -------------------------------------- |
| Create a Profile         | `POST /public/profiles`                      | `email` required                       |
| Upsert a Profile         | `PUT /public/profiles`                       | `email` or `phone`                     |
| Update a Profile         | `PATCH /public/profiles`                     | `email` (lookup); `newEmail` to rename |
| Get a Profile            | `GET /public/profiles/lookup?email=`         | `email`                                |
| Add to List              | `POST /public/lists/:id/members`             | `emails[]`                             |
| Remove from List         | `DELETE /public/lists/:id/members`           | `email` / `emails[]`                   |
| Send Event               | `POST /events/ingest`                        | `email` / `phone` / `contactId`        |
| Send Email               | `POST /public/messages/email`                | `to` (or `contactId`)                  |
| Send SMS                 | `POST /public/messages/sms`                  | `to` (or `contactId`)                  |
| Blacklist / Un-blacklist | `POST` / `DELETE /public/profiles/blacklist` | `email`                                |

### Update a Profile — parameters

All optional except **Email** (the lookup key). Native fields write to their column; everything else merges into custom properties.

<AccordionGroup>
  <Accordion title="Identity & locale">
    Email (lookup), New email (rename), Phone, First name, Last name,
    Timezone, Language (`locale`).
  </Accordion>

  <Accordion title="Consent">
    Email consent, SMS consent, Push consent — each one of `subscribed`,
    `unsubscribed`, `never_subscribed`, `cleaned`.
  </Accordion>

  <Accordion title="Attributes">
    Tags (array), Notes, City, Country, State/Province, Zip, Address,
    Address line 2, Date of birth, Gender, Job title, and any Custom
    properties (key/value).
  </Accordion>
</AccordionGroup>

## Universal "Make an API call" module

For anything not covered by a dedicated module, use the generic call module. It signs the request with your connection and lets you hit any public endpoint:

```
Method:  POST
URL:      /public/profiles
Body:     { "email": "{{email}}", "firstName": "{{name}}", "tags": ["make"] }
```

The base URL is `https://api.senderz.app/api/v1`; your connection adds the `X-Sender-Tenant` and `X-API-Key` headers automatically.

## Pagination in Make

List modules and search RPCs page with `limit` + `offset`. The response carries `has_more` and a `next_cursor` (a stringified offset). Make follows the cursor for you.

<Info>
  Make caps a module run at 40 seconds, 100 requests and 3,200 records. The
  Senderz list endpoints are database-paginated and default to a `limit` of
  50 (max 100), which fits comfortably inside Make's limits.
</Info>

## Example scenarios

<AccordionGroup>
  <Accordion title="Sync new CRM contacts into Senderz" icon="arrows-rotate">
    Trigger on a new row in your CRM → **Upsert a Profile** by email →
    **Add to List** (your newsletter segment).
  </Accordion>

  <Accordion title="Send a transactional SMS from another app" icon="comment-sms">
    Trigger on an event in another tool → **Send SMS** with the recipient and
    body. The send is wallet-gated and uses your approved sender ID.
  </Accordion>

  <Accordion title="Push Senderz opens into a data warehouse" icon="database">
    **Email opened** trigger → transform → write to BigQuery / Sheets.
  </Accordion>

  <Accordion title="Fire a custom lifecycle event" icon="bolt">
    Trigger on a subscription renewal → **Send Event** (`renewal`) with
    properties → a Senderz flow enrolled on that custom event does the rest.
  </Accordion>
</AccordionGroup>

## Reference

* [Public API introduction](/en/api-reference/introduction)
* [Authentication](/en/api-reference/authentication)
* [Profiles](/en/api-reference/profiles) · [Lists](/en/api-reference/lists) · [Messages](/en/api-reference/messages) · [Webhooks](/en/api-reference/webhooks)
