Funnel · AsyncAPI Specification

Funnel Webhooks

Version

View Spec View on GitHub CompanyMarketingMarketing IntelligenceMarketing DataAnalyticsAdvertisingData IntegrationETLData WarehouseAttributionReportingBusiness IntelligenceMCPAI AgentsMarketing Mix ModelingAsyncAPIWebhooksEvents

AsyncAPI Specification

funnel-webhooks.yml Raw ↑
generated: '2026-08-12'
method: searched
source: >-
  https://help.funnel.io/en/articles/8439795-file-import-webhook-api-documentation +
  https://help.funnel.io/en/articles/8439483-file-import-webhook-overview
asyncapi_spec: null
asyncapi_note: >-
  Funnel publishes no AsyncAPI document. Probes of /asyncapi.yaml and /asyncapi.json on every Funnel
  host, and a scan of the funnel-io GitHub organisation (10 public repos), found none.
direction: inbound
direction_note: >-
  IMPORTANT — read this before treating Funnel as an event publisher. Funnel's "webhook" is
  INBOUND: the consumer POSTs to a Funnel-issued URL to hand Funnel file links to ingest. Funnel
  does NOT publish outbound event callbacks to consumer-supplied endpoints, and there is no event
  catalogue, no subscription API, no delivery-retry policy and no signature-verification scheme to
  document. Funnel's only outbound notification surface is human-facing daily connection emails
  (optionally relayed into Slack), not a machine event stream.
webhooks:
- name: File Import Webhook
  provider_name: Funnel's webhook / File Import - Webhook API
  direction: inbound
  url_template: https://fileimport-webhook.funnel.io/{webhook_id}
  method: POST
  content_type: application/json
  authentication:
    type: apiKey
    in: header
    name: x-funnel-fileimport-token
    detail: >-
      Per-data-source secret token generated inside the Funnel app when a File Import data source is
      created with the Webhook transport type. Requests without it are denied with 401.
  purpose: >-
    Send Funnel LINKS to files to ingest — not file content. Funnel then fetches each link and loads
    the file into the File Import data source.
  request_body:
    shapes:
    - form: single link
      example: '"https://link-to-file.csv"'
    - form: list of links
      example: '["https://link-to-file-1.csv","https://link-to-file-2.csv"]'
    deprecated_shapes:
    - form: object with urls member (single)
      example: '{"urls": "https://link-to-file.csv"}'
      status: deprecated
      detail: Funnel states this form "will be removed in upcoming updates".
    - form: object with urls member (list)
      example: '{"urls": ["https://link-to-file-1.csv","https://link-to-file-2.csv"]}'
      status: deprecated
  link_requirements:
  - Links must be HTTPS.
  - Links must be publicly accessible or pre-signed; password-protected links are rejected.
  - The body carries links, never file content.
  constraints:
    file_types:
    - CSV
    - TSV
    - XLSX
    - ZIP (containing one or more of the above)
    max_file_size: 1 GB
    throttling: >-
      Documented but unquantified — "If you send an abnormal number of requests or at a very high
      frequency, your requests may be denied." See rate-limits/funnel-rate-limits.yml.
  responses:
  - status: 200
    meaning: Accepted; Funnel will attempt the import. Acceptance is not import success.
  - status: 400
    meaning: Bad request — missing or invalid links in the POST body.
  - status: 401
    meaning: Invalid credentials — wrong or missing x-funnel-fileimport-token.
  - status: 500
    meaning: Internal server error on Funnel's side.
  see: errors/funnel-problem-types.yml
  common_integrations:
  - AWS Lambda
  - Google Cloud Functions
  - Azure Functions
  - Zapier
  - Microsoft Power Automate
  published_examples:
  - curl
  - Python (requests)
  - Node.js (https)
event_catalog: []
event_catalog_note: >-
  Empty by fact, not by omission — Funnel documents no outbound events. This is why no AsyncAPI
  artifact is emitted and why the event-surface family is genuinely N/A for this provider rather
  than a gap.
notes: >-
  Captured verbatim from Funnel's own published webhook documentation, including its stated
  deprecation of the {"urls": ...} body form. This is a real, first-party, documented HTTP contract
  with published authentication, request shapes and status codes — one of only three programmatic
  surfaces Funnel ships.