Documentation

ADT

Run the customer's ADT order lifecycle: pre-qualify, build the order, submit it, and track settlement. All actions run against POST /customers/{id}/... and require the customer's monitoring company to be an enabled ADT integration; the customer's identity, address, and billing data always comes from the customer record.

Gated by the ADT permission at the customer's location — all operations, matching SecurityTrax. The pre-check pair (adt_precheck, adt_precheck_result) also works for leads — the only ADT actions that do.

Call order

  1. adt_precheck — run the address/credit pre-qualification (works on leads too). If the response says it ran in the background, poll step 2 until results appear.
  2. adt_precheck_result — confirm the pre-check passed; its order id seeds the first save.
  3. adt_options and adt_order_data — fetch the catalogs and the prefilled order values.
  4. adt_save_order — create the order (repeat to update it before submission).
  5. adt_submit_order — submit for confirmation. Settlement is asynchronous (a background task at ADT's pace).
  6. Poll adt_order_status until order_confirmed is true — that read is also what stores the monitoring account number, serial, and receiver on the customer.

Order-state semantics

  • Create-vs-update resolves server-side: the first save consumes the pre-check's order id; once an order exists, the same action updates it.
  • A settled (confirmed) account is not blocked from adt_save_order — ADT is skipped and the response says changes were not synced, matching every other SecurityTrax surface.
  • adt_submit_order refuses when no order exists (409 no_order), when the account already settled (409 already_confirmed), and while a submission is mid-flight (409 submission_in_progress).
  • Order cancellability is ADT's decision — adt_cancel_order refusals surface as the 422 partner message.

ADT wave 2 (envelopes/e-contracts, linked orders, pre-cut-in / cleanup / rate adjustment, funding-blocker and info reads) remains on the v1 API and SecurityTrax for now.

Action reference

Run ADT's pre-check (address/credit pre-qualification) for this customer or lead

POST /{profile}/user/v4/customers/{id}/adt_precheck

No request body.

Read this customer's ADT pre-check outcome (optionally refreshing from ADT)

POST /{profile}/user/v4/customers/{id}/adt_precheck_result

Field Required Type Description
refresh No boolean Re-query ADT even if a cached result exists before reading.

Read the prefill/current values for this customer's ADT order

POST /{profile}/user/v4/customers/{id}/adt_order_data

No request body.

Create or update this customer's ADT order

POST /{profile}/user/v4/customers/{id}/adt_save_order

Field Required Type Description
equipment_panel Yes string Equipment panel id (discover with adt_options).
install_type Yes string Install type id (adt_options).
radio_type No string Radio type id (adt_options).
radio_primary No boolean Radio is the primary communication path.
lead_source No string ADT lead source id (adt_options).
estimated_completion_date No string Estimated completion date.
add_on_services No array Entries of {id, value_description, selected} (catalog via adt_options).
e_contract_bypass No boolean Bypass the ADT e-contract.
sop_deposit_amount No string SOP deposit amount.
house_account_reason No string House-account reason id (adt_options).
house_account_suppress_qsp No boolean Suppress QSP on a house account.
tracking_pin No string Tracking PIN.
credit_holder_authentication_number No string Credit-holder authentication number.
overwrite_credit_holder_name No boolean Overwrite the credit-holder name on an existing order.
system_move No boolean This order is a system move.
system_move_order_id No string The originating order for a system move.
affinity_member_number No string Affinity member number.
secondary_site_number No string Secondary site number.
auto_draft_equipment_cost No boolean Auto-draft the equipment cost.
credit_holder_physical_address_data No object Commercial only: {chpa_address_line_1, chpa_address_line_2, chpa_city, chpa_state, chpa_zip_five_or_nine}.
ny No object NY-group states only: {estimated_completion_date, deposit_account, down_payment, amount_due}.

Submit (confirm) this customer's ADT order — settles asynchronously

POST /{profile}/user/v4/customers/{id}/adt_submit_order

No request body.

Read this customer's ADT order status (settles a submitted order locally)

POST /{profile}/user/v4/customers/{id}/adt_order_status

No request body.

Cancel this customer's ADT order

POST /{profile}/user/v4/customers/{id}/adt_cancel_order

No request body.

Discover the ADT order option catalogs for this customer

POST /{profile}/user/v4/customers/{id}/adt_options

No request body.

Failure semantics

Pre-flight problems are 409 (wrong/missing provider or monitoring company, lead where not permitted, already/not provisioned, no order) or 402 (integration disabled); partner rejections are 422 carrying the partner's message; an unreachable partner is 502 and never persists anything.

Related

Ask about the docs
Ask about the docs
Answers from the SecurityTrax documentation

Ask about a feature, setting, or workflow.

Answers come from the documentation. Double-check anything important. AI features are subject to the AI Terms.