Ogave SMSDevelopers

Integrations

Connect Ogave SMS to the tools you already use. Everything goes through the same engine as the API: your plan prices, your balance, your sender IDs, blacklist and opt-outs. Manage connections in the portal under Integrations.

PlatformWhat it doesHow it connects
Zapier · MakeInstant triggers: message delivered, link clicked, inbound message, contact opted out. Actions: send SMS, add / update contact.Your API key (REST hooks)
ShopifyAbandoned cart, order created, order shipped (tracking), OTP codesOAuth app install
WooCommerceAbandoned checkout, order created, order completed (tracking), OTP codesREST API keys or a webhook secret
Tiendanube / NuvemshopAbandoned cart, order created / paid / shippedPartner app install (OAuth)
VTEXOrder created / paid / invoiced, abandoned carts from a triggerApp key + app token
PrestaShopAbandoned cart, order created / paid / shippedWebservice key (read every few minutes)
Magento 2 / Adobe CommerceAbandoned cart, order created / paid / shippedIntegration access token (read every few minutes)
JumpsellerAbandoned checkout, order created / paid / shippedAPI login + token, hooks token
HubSpotTwo-way contact sync (on demand + scheduled), SMS logged on the contact timelineOAuth
Zoho CRMContacts or leads both ways, opt-outs, SMS and replies as notes, send SMS from workflow rulesOAuth
Google SheetsKeep a contact list in sync with a sheetPublic link, or OAuth for private sheets
OktaOkta's SMS codes (MFA, phone enrollment) delivered with your Verify appTelephony inline hook + API key (verify)
Auth0Auth0's SMS codes (MFA, enrollment) delivered with your Verify appCustom phone provider Action + API key (verify)

REST hooks

Subscribe a URL to one event. Events are delivered by our webhook system: signed (Webhook-Signature, same scheme as API webhooks), retried with backoff, listed in GET /v1/webhooks/deliveries. A hook belongs to the mode of the key that created it: test keys get test events only. Answer 410 Gone to delete the subscription.

POST/v1/hooks{"event": "message.delivered", "target_url": "https://…", "platform": "zapier"} → 201 {"id": "hook_…", …}
GET/v1/hooksYour subscriptions (mode of the key)
DELETE/v1/hooks/{id}Unsubscribe
GET/v1/hooks/samples/{event}Your last 3 real events of that type, or one example (for field mapping)
curl -X POST https://app.ogave.co/v1/hooks -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"event":"message.inbound","target_url":"https://hooks.example.com/sms"}'

Events

Every delivery has the same envelope: {"id": "evt_…", "type": "<event>", "mode": "live", "created_at": "…", "data": {…}}.

EventWhendata
message.deliveredAn SMS from the API, the portal or a campaign is deliveredThe message object (source: "portal" for portal traffic)
message.clickedA tracked short link is clickedMessage + url, short_url, clicked_at, device, os, browser
message.inboundA reply / MO to one of your numbersfrom, to, text, channel, received_at
contact.opted_outUnsubscribe from a list (keyword, STOP, link, form) or a number added to the blacklistphone, scope (group | all), group_id, group_name, source, keyword, opted_out_at
{"id":"evt_01jb…","type":"contact.opted_out","mode":"live","created_at":"2026-10-31T10:15:00Z",
 "data":{"object":"opt_out","phone":"+573001234567","scope":"group","group_id":"6ae4daa666119","group_name":"Newsletter","source":"keyword","keyword":"baja","opted_out_at":"2026-10-31T10:15:00Z"}}

STOP produces one scope: "all" event (blacklist) plus one scope: "group" event per list the number was in.

Contacts

GET/v1/contact-listsYour lists: id, name, contacts
POST/v1/contact-lists{"name": "Leads"}
POST/v1/contactsAdd or update (the phone is the key inside a list). 201 created, 200 updated.
GET/v1/contacts?list_id=&phone=Search (up to 100)
GET · PATCH · DELETE/v1/contacts/{id}One contact
curl -X POST https://app.ogave.co/v1/contacts -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"list_id":"6ae4daa666119","phone":"+573001234567","first_name":"Ana","email":"ana@example.com","fields":{"COMPANY":"Acme"}}'

Rules (same as file imports): the number must be valid (international, or national with country); blacklisted numbers are refused (422 opted_out); a contact that unsubscribed is updated but never re-subscribed; fields keys are the field tags of the list and values must fit the field type (date YYYY-MM-DD, number, URL…), else 422 with param: "fields.<TAG>".