Skip to main content

Overview

When a customer completes an Imprint application, you learn the outcome in two complementary ways:
  1. The SDK result — returned client-side, in the browser or mobile app, the moment the customer exits the Imprint application experience (see Step 3 of Apply for a loan or credit card).
  2. The application event notification — a signed, server-to-server webhook Imprint POSTs to your configured endpoint when a credit decision is reached.
Both report on the same application, but they are designed for different jobs. Use the SDK result to update the customer’s experience immediately. Use the webhook as the source of truth for your backend systems.
New to event notifications? Start with Subscribe to event notifications for setup, signature verification, and retry/idempotency handling.

SDK result vs. event notification

Why the status sets differ

The two channels answer different questions:
  • The SDK result answers “What happened in this browser/app session?” — including the customer walking away or launching with a bad token.
  • The webhook answers “What did Imprint decide about this application?” — and a decision only exists once the application reaches a terminal state.
Abandoning the flow (IN_PROGRESS) and a bad launch (ERROR) are session outcomes, not credit decisions — so they exist only on the SDK side and never produce a webhook. OFFER_ACCEPTED and REJECTED are the two terminal decisions, so they appear in both channels. Use this mapping to decide what to expect:
OFFER_ACCEPTED and REJECTED are the same strings in both channels — but they are not interchangeable. The SDK result is client-reported and best-effort; the webhook is authoritative. Two consequences:
  • Don’t treat the client-side OFFER_ACCEPTED as final for fulfillment, accounting, or provisioning. Confirm it against the webhook (or the API).
  • Don’t wait for a webhook on an abandoned or errored session — there will never be one. Handle IN_PROGRESS and ERROR entirely client-side.
A customer can also close their browser between accepting the offer and the SDK returning, so you may receive the webhook with no client-side result at all. Always treat the webhook as the source of truth.

When the webhook fires

Imprint sends an APPLICATION event notification when an application reaches a terminal state: There are no IN_PROGRESS or intermediate-state webhooks. An application emits at most one terminal notification.
A REJECTED notification is only delivered when Imprint can give you enough context to act on it — i.e. the application carries a partner_customer_id and/or maps to a known customer. If neither is available, the rejection is not sent, because it would not be actionable on your side.

Payload

See also the Application Event reference.
1

Update the UI from the SDK result

On SDK exit, react to the client-side result immediately — for OFFER_ACCEPTED, show a success banner or route the customer to a page to learn more about the credit card rewards. Treat this as provisional.
2

Confirm and persist from the webhook

When the APPLICATION webhook arrives, verify the signature, then record the decision against the customer_id / partner_customer_id as the source of truth for fulfillment, accounting, and downstream systems.
3

Deduplicate

Use object, customer_id, and updated_at to ignore duplicate deliveries (Imprint retries until you acknowledge with a 2XX).
4

Don't block on a webhook for non-decisions

IN_PROGRESS and ERROR SDK results never produce a webhook. Handle them entirely client-side.