When to use this endpoint

Use Customers_listByLastEdited as the changed-ID step in a customer synchronization worker. Supply an overlapping checkpoint, fetch the returned customers with Customers_getById, process them idempotently, and advance the checkpoint only after the full batch succeeds.

See the Short polling guide for retry, overlap, and checkpoint examples. This endpoint does not return customer details or deletion events.

Authentication and permissions

The request must authenticate with signed API-key fields or a logged-in CRM session. The linked user must be active.

The handler requires login but has no additional role or page-permission check. It reads the authenticated tenant only and excludes soft-deleted customers. Inactive customers are included.

Parameters

ParameterTypeRequiredDescription
fromDatetime stringYesInclusive lower bound for last_edited, in exactly YYYY-MM-DD HH:MM:SS form. The value is compared directly with the tenant database timestamp; no timezone conversion is performed by this handler.

Example request

$ids = FM_api('Customers_listByLastEdited', [
	'from' => '2026-09-24 10:13:00',
]);

Example response

[
  1042,
  1088,
  1116
]

The response is a bare JSON array of integer customer IDs.

Errors and unusual responses

ResponseCondition
{"error":"missing \"from\" parameter, or parameter is in wrong format. should be \"yyyy-mm-dd hh:ii:ss\""}from is missing or does not match the required numeric shape.
[]No non-deleted customer has last_edited at or after the checkpoint.

The shape check does not verify that the components form a real calendar date. Use a valid timestamp produced by your checkpoint logic.

Behaviour and edge cases

  • The comparison is inclusive: last_edited >= from. Seeing the same ID on consecutive overlapping polls is expected.
  • There is no upper-bound parameter, pagination, result limit, or explicit ordering. Sort or batch the returned IDs in the client if downstream processing requires it.
  • Inactive customers are included because the only state filter is deleted=0.
  • Deleted customers are excluded even though deletion updates last_edited. Use an agreed deletion-log strategy when the destination must mirror deletes.
  • Edits made while a request is running can enter the result depending on database timing. An overlap plus idempotent processing is required for a durable worker.

See it in Fieldmotion

CRM1

No production CRM1 screen directly calls Customers_listByLastEdited. CRM1 maintains its own browser caches through the general polling flow; use a signed request to observe this public synchronization endpoint.

CRM2

No production CRM2 caller was found. The endpoint is intended for external short-polling integrations rather than an interactive CRM2 screen.

Related endpoints

  • Customers_getById retrieves selected fields for the changed IDs.
  • Customers_list can return records directly with a strict last_edited lower-bound filter and optional pagination.
  • Short polling provides a complete checkpoint and retry workflow.