Skip to main content

Why does my Custom URL Import data source only refresh once a day, and why is there no manual refresh button?

Custom URL Import is a cache-based connector. The configured endpoint is called only during scheduled refresh cycles, and every dashboard query is answered from the cached rows rather than by calling the endpoint live. Because of this, user-triggered refresh is intentionally disabled (allowUserManualRefresh = false), and sub-daily refresh is not available. Newly published data at the source appears on the next scheduled sync, not immediately. For the exact refresh schedule, see the Custom URL Import data reference.

How do I pass the refresh date to a POST body or an auth header?

Date and token values are not limited to the URL. Before each request, the connector substitutes a fixed set of placeholders in the URL, the request headers, and the POST body, and the substitution is recursive, so placeholders inside nested JSON objects and arrays are replaced too. The available placeholders are: To send the date in a POST body or a header, place $date (or $plusOneDate) anywhere inside the body JSON or the header JSON, and it is filled in at request time. The dateFormat string follows date-fns conventions and must use lowercase yyyy and dd; uppercase YYYY or DD is rejected at validation.

Why is my paginated CSV endpoint only returning the first page?

This is expected. Multi-page accumulation is supported only for JSON responses. When the response format is CSV, the connector fetches the first page and stops, so paginated CSV results are not merged. To capture more than one page, either have the endpoint return the full day of data in a single CSV response, or switch the endpoint to JSON and set responseBodyPath to the array of rows. JSON responses page through page-number or offset mode until the endpoint reports it has returned everything.

Why did my import replace all my rows instead of adding to them?

This depends on whether unique keys are configured, which determines how newly fetched rows merge with the cache. An import that overwrites everything each run is the no-unique-keys path. To append and update instead of replacing, set one or more unique-key columns that identify a row uniquely (a date-parameterized source commonly combines a business identifier with the injected _date column, for example bookingReference,_date). Note that a data source explicitly configured to replace all data on refresh (replaceAllDataOnRefresh) always truncates before inserting, regardless of unique keys — that mode is intended for snapshot endpoints that always return the complete current list.

Why is my JSON endpoint rejected with a “not a valid list” error?

For JSON responses, the rows the connector caches must resolve to an array. When the array is nested inside a wrapper object, the path to it is supplied through responseBodyPath (dot notation, for example data.results). If the resolved value is not an array, the fetch fails with response body is not valid list.. The fix is to set responseBodyPath to the exact location of the row array. An endpoint that returns a single object, or that wraps the rows one or more levels deeper than the configured path, triggers this error until the path points at the array itself.