Integrations

Twilio

Send SMS on invoice.submitted, order shipments, and delivery reminders using Twilio.

The snag

Customers pay faster when they get an SMS with the invoice link, but wiring one up per template is tedious.

How Zivvy helps

Subscribe to sales-invoices.submitted (and other events) and let a Twilio-backed webhook consumer send the SMS.

What you get

  • Send SMS on sales-invoices.submitted with pay link
  • Delivery updates on delivery-notes.submitted
  • OTP for high-value payment reconciliation

Workflow stream

SMS pay-link when sales-invoices.submitted fires

Common uses

  1. 01

    SMS pay-link when sales-invoices.submitted fires

  2. 02

    SMS shipment ETA on delivery-notes.submitted

  3. 03

    Two-factor OTP for /v1/payment-entries above threshold

Integration code

Open API reference

Register Twilio webhook

curl -X POST https://integrate.zivvy.xyz/v1/webhook-subscriptions \
  -H "Authorization: Bearer $ZIVVY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_url": "https://api.your-app.com/hooks/zivvy-twilio",
    "events": ["sales-invoices.submitted"]
  }'

Twilio consumer

import twilio from "twilio";

const sms = twilio(process.env.TWILIO_SID, process.env.TWILIO_TOKEN);

export async function POST(req) {
  const evt = await req.json();
  if (evt.event !== "sales-invoices.submitted") return new Response("skip");
  await sms.messages.create({
    from: process.env.TWILIO_FROM,
    to: evt.data.contact_phone,
    body: `Invoice ${evt.data.name} is ready: ${evt.data.portal_url}`
  });
  return new Response("ok");
}

API endpoints

POST /v1/webhook-subscriptionsGET /v1/sales-invoices/{name}GET /v1/delivery-notes/{name}

Events emitted

HMAC-SHA256 signed webhooks, retried for 24 hours.

  • sales-invoices.submitted
  • delivery-notes.submitted
  • payment-entries.paid

0

free seats forever

0

card required to start

1

workspace for the workflow

Questions

Ready to try it?

Free plan. Two seats. No card.