LPLeadProof

Wix form CRM delivery

Give every Wix form automation a verifiable CRM delivery outcome.

Map only approved Wix Forms fields into a controlled server-side relay, preserve one stable source event ID, and return a LeadProof receipt to the automation.

Protect 25 live leads free →Start Builder · $49/monthAudit this workflow
Paid plan uses secure Stripe checkout · plan assigned after verified payment · activate with the checkout email
THE FAILURE GAP

A successful automation run is not proof of delivery.

Wix Automations can send an HTTP request after a Wix Forms trigger, but a completed automation step is not lasting proof that a later CRM write succeeded. Sending the entire trigger payload also exposes every form field, while putting a LeadProof API key in the webhook URL would expose a production credential. A safe bridge uses Wix's custom body structure, a separate ingress token, and a stable source ID before calling LeadProof server-side.

Wix Forms trigger -> Wix Send HTTP request -> authenticated relay -> LeadProof -> CRM
01

Automation completion is not CRM proof

The outbound request can complete while a downstream sales-system write times out, rejects a field, or disappears without a portable receipt.

02

Entire-payload mode can overshare

Wix can send every form field, even when the destination only needs an approved name, email, phone, and source ID.

03

API keys do not belong in webhook URLs

The LeadProof production key must remain in server-side configuration rather than a Wix path or query parameter.

Implementation

Put LeadProof in the delivery path.

Keep the tools that create and process the lead. Standardize only the fragile handoff between them.

Platform reference: Wix HTTP request automation documentationOpen sandbox instructions →
  1. Create a Wix Automation with a Wix Forms trigger, add Send HTTP request, choose POST, and point it to a controlled HTTPS relay protected by a dedicated ingress token.
  2. Choose Customize structure instead of Entire payload; map only name, email, phone, and the most stable submission or contact identifier available from the trigger into event_id.
  3. Keep the LeadProof API key and CRM destination in the relay's server-side configuration, then call LeadProof with event_id as the Idempotency-Key.
  4. Define the relay's receipt_id and status in Wix's response data structure, send a test request, activate the automation, and retain the receipt with the source record.
POSThttps://leadproof.jessesay.chatgpt.site/api/v1/leads
import crypto from "node:crypto";

app.post("/wix/form/:ingressToken", express.json({ limit: "32kb" }), async (req, res) => {
  const expected = process.env.WIX_INGRESS_TOKEN;
  const supplied = req.params.ingressToken;
  if (!expected || !supplied) return res.sendStatus(401);

  const expectedBytes = Buffer.from(expected);
  const suppliedBytes = Buffer.from(supplied);
  const authentic =
    expectedBytes.length === suppliedBytes.length &&
    crypto.timingSafeEqual(expectedBytes, suppliedBytes);
  if (!authentic) return res.sendStatus(401);

  const { event_id: eventId, name, email, phone } = req.body;
  if (!eventId || !name || !email) {
    return res.status(422).json({ error: "Missing approved lead fields" });
  }

  const response = await fetch(
    "https://leadproof.jessesay.chatgpt.site/api/v1/leads",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.LEADPROOF_API_KEY}`,
        "Content-Type": "application/json",
        "Idempotency-Key": eventId
      },
      body: JSON.stringify({
        destination: process.env.CRM_WEBHOOK_URL,
        name,
        email,
        phone,
        source: "wix_form"
      })
    }
  );

  const delivery = await response.json();
  if (!response.ok) return res.status(502).json({ status: "delivery_failed" });
  return res.json({
    status: delivery.status,
    receipt_id: delivery.receipt?.id
  });
});

Questions

What teams ask before adding LeadProof.

Can Wix call the LeadProof production endpoint directly?

Use a controlled relay so the required LeadProof Authorization header and CRM destination remain server-side. Do not place the LeadProof API key in a Wix URL or request body.

Should the automation send the entire Wix Forms payload?

No. Wix documents a Customize structure option; map only the fields the destination is authorized to receive.

What should be used as event_id?

Use the stable form submission or contact identifier exposed by the selected Wix trigger. Confirm it remains unchanged in Wix test requests before activation.

FREE · NO SIGNUP

See the gaps in your real workflow.

Get an explainable risk score, prioritized fixes, and the right LeadProof plan.

Protect 25 live leads free →Run the reliability auditStart Builder · $49/month