
This integration runs on webhooks and the REST API, not a packaged connector: VGraple CRM posts signed events to a your own CRM webhook trigger, and your own CRM calls VGraple CRM's REST API with an API key to create contacts and leads or send approved templates. It is the lowest-cost route for high volumes and the most flexible, because you shape every payload.
What syncs
| Data | Direction | Timing |
|---|---|---|
| Events: messages, contacts, leads, conversations, broadcasts, forms | VGraple CRM to your system | Instant, signed, retried, logged |
| Contacts (upsert), leads, template sends, hooks, broadcasts | Your system to VGraple CRM | Immediate via REST API |
| Templates and pipelines | Your system reads VGraple CRM | On demand |
Setup
- Expose an HTTPS endpoint and register it under Settings, then Webhooks with the events you need; store the
whsec_secret in your secret manager. - Verify
X-Signature-256on every request (HMAC-SHA256 over the raw body, constant-time compare) and return 200 before doing slow work. - Create an API key under Settings, then API Keys (Owner only) and call
GET /api/v1/meto confirm it. - Implement the calls you need:
POST /api/v1/contacts(upsert by phone),POST /api/v1/leads,POST /api/v1/messages(approved template),GET /api/v1/templates,GET /api/v1/pipelines. - Subscribe programmatically with
POST /api/v1/hooksif you prefer code over the settings form, and remove withDELETE /api/v1/hooks/{id}. - Test end to end with your own number, then go live and watch the delivery log for the first day.
How the two directions work
VGraple CRM to your own CRM. Under Settings, then Webhooks, add an endpoint with the your own CRM webhook URL and tick the events you need (message.received, message.sent, contact.created, contact.opted_out, lead.created, lead.stage_changed, broadcast.completed, conversation.assigned, conversation.resolved, conversation.reopened, form.submitted; the four broadcast lifecycle events are subscribed through POST /api/v1/hooks). Every delivery is a JSON POST signed with HMAC-SHA256 in the X-Signature-256 header using the endpoint's whsec_ secret, retried on failure and logged with the response.
your own CRM to VGraple CRM. Create an API key under Settings, then API Keys (Owner only) and use an HTTP module in your own CRM with Authorization: Bearer <key> against https://crm.vgraple.co.in/api/v1: POST /contacts upserts by phone, POST /leads creates a lead in a pipeline, POST /messages sends an approved template by name and language with variables, GET /templates and GET /pipelines list what you can use. Errors come back as JSON with a code and a plain message, including Meta's code on a template send.
Three recipes
- Order shipped in your ERP -> POST /api/v1/messages with the shipping template and tracking URL button; the reply arrives at your endpoint as message.received.
- message.received -> your ticketing system opens a ticket -> agent replies in VGraple CRM -> conversation.resolved closes the ticket.
- Nightly job -> GET /api/v1/leads?since=... -> your data warehouse for reporting alongside other channels.
Design notes
Treat VGraple CRM as the conversation system and your CRM as the system of record. Store VGraple CRM's contact and lead IDs on your records at creation so later events match without lookups. Idempotency: contact creation is an upsert by phone and safe to repeat; lead creation is not, so guard it with your own external reference in a custom field. Rate limit: 600 requests per key per hour; batch nightly syncs and prefer webhooks over polling for anything real-time.
Limits and gotchas
- Only approved templates can be sent through the API; consent, messaging limits, the US marketing pause and delivery protection apply as in the app.
- Webhook endpoints must be public HTTPS; verify the signature before trusting a payload, and deduplicate on the event ID because retries can arrive after a slow success.
- API keys are Owner-only secrets with a rolling limit of 600 requests per hour per key.
- Phone numbers must be in international format without spaces or a leading zero.
- Payloads contain customer personal data; keep your own CRM scenarios and their logs inside your data protection scope.
The webhooks guide, the payload reference, the signature guide and the REST API quickstart have the exact fields and code.