Ship with confidence
Testing & examples
Start with synthetic payloads. Test the receiver and bridge contract before connecting a workflow to real customer calls.
Download the test materials
These are examples and fixtures, not an SDK or a hosted sandbox. The JSON contains synthetic caller details only. The receiver uses Node.js built-ins and needs no package install.
Run the local receiver
Save the two example files together. Rename the receiver to receiver-example.mjs and the fixtures to contract-fixtures.json if your browser added a prefix. Start it from that folder:
node receiver-example.mjsThe fixture binds only to 127.0.0.1:8787 and stores deduplication ids only in memory. It has no sender authentication, database or production retry handling. It is intentionally unsuitable as a public deployment. A Pongg live subscription cannot deliver to this local address.
node --input-type=module -e 'import fs from "node:fs"; const f=JSON.parse(fs.readFileSync("contract-fixtures.json","utf8")); const r=await fetch("http://127.0.0.1:8787/pongg",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f.events.lead)}); console.log(r.status,await r.text());'The first request returns {"accepted":true,"duplicate":false}. Repeating the same event returns duplicate:true. Restarting the process clears that memory; your production receiver needs its own durable deduplication.
Exercise a bridge you own
The fixtures include the actual six request/receipt shapes from the reviewed bridge OpenAPI document. Set your own test bridge URL, test credential and real test-account tenant id; do not paste production secrets into the examples.
export BRIDGE_BASE_URL='https://your-test-bridge.example.com/pongg/v1'
export BRIDGE_API_KEY='REPLACE_WITH_YOUR_TEST_BRIDGE_KEY'
curl --request POST "$BRIDGE_BASE_URL/capabilities" \
--header "Authorization: Bearer $BRIDGE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"tenant_id":"YOUR_TEST_PONGG_TENANT_ID","contract_version":"pongg.crm.v1"}'Bridge acceptance checks
| Check | Expected result |
|---|---|
| Credential belongs to another tenant | Reject before reading or writing that tenant’s data |
| Existing phone/email identity | Return the existing contact id and is_new:false |
| Same write key twice | One CRM record; the original durable receipt both times |
| Timeout after a committed write | A retry returns the original receipt, without another record |
| No calendar openings | slots:[], not fabricated business-hour slots |
| Occupied slot | 409; no shifted or unconfirmed success receipt |
| Successful appointment | Exact start/end; valid timezone; durable id; slot removed from the same availability source |
| Daylight saving / overnight hours | Correct offset-aware instants and customer-local timezone |
| 401 / 429 / 5xx / malformed JSON | Correct failure handling, bounded response and no duplicate writes |
Verify the full path
Connect the test bridge in Integrations, inspect the read-only capability result, and arrange a labelled setup lead or test call with your Success Team. Check the intended route’s Send to your CRM setting and provider record. Pongg’s testing/sandbox modes may guard live provider writes; never change an account mode just to make a test appear successful. Do not treat a mock/pilot result as a production delivery.
