Sign in Create account
Dashboard guide

Integrations

Ready-made code for your stack, CRM connections and connected apps.

What it's for

Integrations brings together three ways to connect Postal to what you already use: Code guides (how to send from your language, framework or platform), CRM (sync contacts with a CRM) and Your app (your product's billing and sign-in become contacts and events).

When to use: When you start integrating (copy the ready-made code), when you connect your contact base to a CRM and when you trigger automations from your app's payments and sign-ups.

#Code guides

Where to find it: Developers › Integrations. Address: app.postal.so/integrations.

A catalog of ready-made examples, with the API URL (https://api.postal.so) and one of your domains already in the code. No key appears: use one of your API keys in place of the ps_sua_chave placeholder.

ItemWhat it does
API keysThe button in the header takes you to the list of keys.
Search by language, framework or platformFilters the catalog (try Node, PHP, SMTP, webhook). Any language with HTTP works with the API.
Sender domainIf the team has more than one domain, you choose which one appears in the examples. With no domain, the examples use seudominio.com.br and the screen reminds you to add and verify a domain.
List on the leftThe options, each with its category: Node.js (API), Next.js (Framework), Python, PHP, Laravel, Ruby, Go, cURL (API), SMTP (SMTP), Supabase Auth, WordPress (Platform) and Webhooks (signature verification).
DetailsThe name and category, a description, the numbered step-by-step, and the code with tabs (when there is more than one example) and the copy button.

See also: SDKs and Laravel · SMTP · Getting started · Verify the signature.

#CRM

Where to find it: Developers › Integrations › CRM tab. Address: app.postal.so/integrations/crm.

Keeps Postal's contacts and the people in your CRM in sync, both ways and without loops. What changes in the CRM arrives as a contact, tag, property and event (and can start an automation); what happens in Postal (contact changed, email opened, clicked, replied to, bounced) goes back to the CRM as the person's data and a note on the timeline.

ItemWhat it does
Your connectionsEach connection with its status (Active, Paused or Failing) and Last synced ... (or Not synced yet).
Connect a CRMCards for HubSpot, Pipedrive and RD Station CRM (native connections, with Connect) and Other CRM (webhook) (with Configure), for any system that sends and receives webhooks.
Plan limitWhen the plan doesn't include CRM connections, or they have all been used, the cards show Upgrade in place of the button.

Native connection (HubSpot, Pipedrive, RD Station CRM)

  1. In Connect, paste the CRM credentials (API token; in Pipedrive, also the account address; in HubSpot, optionally the client secret to receive signed webhooks). They are stored encrypted and never shown again. The window includes Where to find them for each CRM.
  2. On the connection's page, use Test connection to check access.
  3. In Receive from ..., copy the Webhook URL (in Pipedrive, also the HTTP authentication user and password) and set up the webhook in the CRM itself. Without a webhook, Sync now brings everything in whenever you want.
  4. In Fields and stages, email, first name and last name are already linked automatically; add other fields (including custom ones) and say what each funnel stage does in Postal (a property and a tag).
  5. In Send to ..., contact changes and email activity (sent, opened, clicked, replied to) become data and notes on the person.

Webhook connection (Other CRM)

SectionWhat it does
Receive from your CRMThe Webhook URL and the Signing secret (Generate a new secret replaces it). Sign the body with HMAC-SHA256 and send it in X-Postal-Signature. Accept the secret as a token is for tools that don't sign, but it is less secure.
Sync directionBoth ways, Only from the CRM to Postal or Only from Postal to the CRM.
Send to your CRMYour CRM URL (HTTPS), What to send (which events), Do not send changes coming from (anti-loop), Test sending and Send every contact.
Map the fieldsPaste a Sample payload from your CRM, link each field (CRM field → Postal field, with the Direction of each one), define the funnel stages and check See the sample result before saving.

Sync log

Each connection has a Sync log, with the Filter by result filter (Success, Failed, Queued, Skipped) and the columns When, Direction (Received or Sent), What (webhook received, person, email activity, test, full sync), CRM record and Result. Failures have a Resend button. On the connection, Pause / Resume stops it without deleting, and deleting removes the log.

Tip

To keep a change from bouncing back and forth between the two systems, use "Do not send changes coming from" and leave the direction only where it's needed.

See also: CRM connections · CRM via webhook · Source of changes.

#Your app (billing and sign-in)

Where to find it: Developers › Integrations › Your app tab. Address: app.postal.so/integrations/apps.

Connects your product's billing and sign-in to Postal: every sign-up, payment or cancellation becomes a contact and an event, and the events trigger automations. Your app's login emails (confirmation, magic link, password) can also go out through Postal.

ItemWhat it does
Your integrationsThe connections you created, each with Connected, Last event ... (or No events received yet).
Connect a sourceCards for Stripe (customers, subscriptions, invoices, checkout), Supabase, Clerk, Auth0 and Firebase Auth. Connect creates the connection and opens its page. If the feature isn't in your plan, the cards show Not in your plan and Upgrade.
How it worksA sign-up becomes a contact (email, name and the user's ID in the app); each event is kept on the contact and can start an automation; login emails can go out through Postal.
Login emails through the APIGuides, with no connection, for Better Auth, Auth.js and Auth0 to send through the Postal API (Read the guide).

A connection's page

  1. Follow the steps shown for your source (in the Stripe or Clerk dashboard, and so on) using the Connection URL on the page.
  2. Paste the secret (the Signing secret from Stripe and Clerk, the value of X-Postal-Secret in Supabase and Firebase, or the Auth0 token) and click Save secret. The secret is stored encrypted and never shown again. Generate a new secret replaces the current one, which stops working.
  3. In Events, check the ones that become a contact and an event in Postal (the others are ignored). Create automation, on each event, opens an automation with that trigger already set.
  4. In Contact, choose what changes on each event: Sync the name, Add to segment, Subscribe to topic and what to do When the user is deleted in the app (Only record the event, Unsubscribe the contact or Delete the contact). Save settings saves it.

Supabase also has Login emails through Postal: with the Send Email Hook, Supabase hands each authentication email to Postal, which sends it with your template and your domain (Sender from a verified domain, Reply to, Supabase project URL and the Templates for each type of email, with Restore default). These emails count toward the sending quotas.

Pause / Resume stops the connection without deleting it; if you delete it, the provider gets an error when it sends events. The number of app integrations depends on the plan.

See also: Integrate your app · Stripe · Supabase · Clerk · Auth0 · Firebase Auth.