Server-side delivery is valuable because it moves important data beyond the browser.
It can help teams collect first-party events, apply controlled transformations, and send data to the systems where it is needed. But moving an event outside the browser also creates a new responsibility: proving what happened after the event left the collection point.
Did the event arrive? Was it transformed correctly? Did the destination accept it? Is it visible where the customer expects to use it?
These are not edge cases. They are the core questions of implementation.
Map the event path
Every destination should have a simple, shared picture of the event lifecycle. The exact technical details will differ by platform, but the customer-facing vocabulary can remain consistent:
- Received: Hardal accepted the source event.
- Transformed: the event was enriched, filtered, mapped, or redacted according to configured rules.
- Queued: the event is waiting for delivery or retry.
- Sent: Hardal attempted delivery to the destination.
- Acknowledged or rejected: the destination responded with a success or failure signal.
- Verified: the customer confirmed the expected result in the destination where verification is possible.
This sequence removes ambiguity. A successful send attempt is useful information, but it should not be confused with downstream reporting visibility.
Define success precisely
Teams often use a single green status to represent a complex delivery flow. That is convenient until a customer asks why an event is missing from a destination report.
Success should be defined for the specific question being asked. For example:
- Is the event present in Hardal?
- Did the delivery request receive a positive response?
- Did the destination accept the event according to its rules?
- Is the event reflected in a destination report, audience, or export?
The answer may be different at each stage. Reporting systems can have processing delays. Destinations can apply their own deduplication or validation. Some platforms provide clear acknowledgement; others require a separate verification step.
The right product behaviour is to state what is known, not to imply that every downstream outcome is already confirmed.
Test one known event end to end
The fastest way to build confidence is to send a known test event with a stable identifier. The test should be safe, intentional, and easy to find later.
Record:
- The event ID.
- The time it was created.
- The expected properties and transformation.
- The destination configuration used.
- The expected delivery window.
- The exact place where the result can be checked.
This record becomes evidence for onboarding, support, and change management. When a configuration changes, the same test can be repeated. When a customer reports a problem, the support conversation starts with an event trace rather than a vague description.
Design the failure handoff
No delivery system is perfect. Credentials expire, payloads change, destination APIs reject fields, and networks fail. The difference between a frustrating incident and a manageable one is the quality of the handoff.
A useful error state should tell the customer or support teammate:
- Which destination was affected.
- Which delivery state failed.
- Whether a retry is planned or available.
- Which event ID or time range is relevant.
- What action can be taken next.
Generic failure messages create more work because they hide the evidence needed to investigate. A specific state, a reproducible event, and an appropriate recovery action make the system feel dependable even when a delivery fails.
Make evidence part of the integration
The best integrations do not only move data. They make the data journey understandable.
For every server-side destination, customers should be able to answer a simple question: “What evidence do we have that this event reached the place where it is meant to be useful?” The answer may include a delivery acknowledgement, a destination-side event view, a warehouse record, or a documented processing window. What matters is that the answer is clear.
Do not call an integration complete until its evidence path is complete.