Technical guide · Integrations

Connect QR vCard Pro to any CRM

A step-by-step guide: how to connect a QR vCard Pro webhook to Zapier, and Zapier to your CRM — without writing code.

QR vCard Pro Zapier CRM / 6,000+ apps

0Prerequisites

1Create the webhook in QR vCard Pro

  1. In the WordPress admin, open QR vCard Pro → Webhooks.
  2. Click Add webhook.
  3. URL — paste the address Zapier gives you here (Step 2).
  4. Events — pick contact.received (or all, *).
  5. Save. The system generates a secret key used to sign each call.
ℹ️

Three events: contact.received (a lead came in — the key one for CRM), card.created and scan.recorded.

2Zapier: catch the webhook

  1. In Zapier, create a new Zap.
  2. For the Trigger, choose Webhooks by Zapier.
  3. For the Event, choose Catch Hook.
  4. Copy the Custom Webhook URL Zapier shows.
  5. Paste it into your webhook in QR vCard Pro and save.
  6. Click Test (or do a real exchange) so Zapier learns the fields.

Tip: run the test first — Zapier then "learns" the fields (data.email…) and offers them for mapping.

3Connect to your CRM

Add an Action step and pick your CRM. Map the webhook fields (prefixed data.):

HubSpot

Action Create or Update Contact: data.email → Email, data.name → Name, data.phone → Phone, data.company → Company.

Pipedrive

Action Create Person: data.name → Name, data.email → Email, data.phone → Phone.

Salesforce

Action Create Lead: data.name → Last Name, data.email → Email, data.company → Company (required).

Google Sheets (simplest)

Action Create Spreadsheet Row: each lead becomes a row.

🔁

Turn the Zap on (Publish). From then on, every new contact.received flows into your CRM automatically, in real time.

4Payload reference

Every webhook is an HTTP POST with a JSON body. The useful data is in the data field.

// contact.received { "event": "contact.received", "occurred_at": "2026-05-28T12:00:00+00:00", "plugin_version": "1.39.1", "data": { "contact_id": 42, "card_id": 1800, "name": "Marko Marković", "email": "marko.markovic@primer.rs", "phone": "+381 64 000 0000", "company": "Primer doo", "consent_given": true, "acquisition_method": "direct_form", "received_at": "2026-05-28T12:00:00+00:00" } }
EventKey fields in data
contact.receivedcontact_id, card_id, name, email, phone, company, message, consent_given, acquisition_method, received_at
card.createdcard_id, title, slug, landing_url, created_at, updated_at, meta
scan.recordedcard_id, action, scanned_at

HTTP headers

X-QRVP-Eventthe event name
X-QRVP-Signaturesha256=<HMAC>
X-QRVP-Deliveryunique delivery ID
X-QRVP-Attemptretry attempt number

5Security — HMAC signature

Every call carries X-QRVP-Signature as sha256=<hash> — the HMAC-SHA256 of the body, signed with the secret. The receiver can thus confirm the call comes from your site.

ℹ️

Zapier's Catch Hook needn't verify the signature (the URL is secret). Verification matters for your own endpoint:

$body = file_get_contents('php://input'); $expected = 'sha256=' . hash_hmac('sha256', $body, $secret); $received = $_SERVER['HTTP_X_QRVP_SIGNATURE'] ?? ''; if (! hash_equals($expected, $received)) { http_response_code(401); exit; }

6Troubleshooting

SymptomCause & fix
Zapier doesn't catch the testURL pasted wrong, or the webhook isn't subscribed. Check the URL and that contact.received is selected.
No "Webhooks" pageTier is below Unlimited. Webhooks start at the Unlimited plan.
CRM fields emptyMapping uses the wrong path — fields are under data (e.g. data.email).
Calls are delayedDelivery is async (WP-Cron). For instant delivery, set a real system cron.

Ready to automate your leads?

Webhooks are included from the Unlimited tier up.

See pricing