configuring-exports

Configure Celigo export resources -- the data source step that fetches records from external systems. Use when creating or editing exports, choosing the right adaptor type for a target application, setting up delta/incremental syncs, webhooks, file transfers, or lookups.

By celigo · 1,047 installs

npx skills add celigo/ai --skill configuring-exports

Source repository · Upstream listing

<! TIER:1 Configuring Exports An export is the data source in a Celigo integration. It connects to an external system and pulls data into the pipeline. Exports serve two roles: Source the starting point that fetches the primary batch of records Lookup a mid flow enrichment step ( isLookup: true ) that fetches additional data per record during processing Both roles are used across flows, APIs, and tools. Beyond fetching data, exports also handle post retrieval processing before records enter the pipeline: Output filter expression based filtering to skip records that don't match criteria Transform Transformation 2.0 expression rules to reshape/flatten response data before mapping preSavePage hook JavaScript processing on the full page of records before they enter the pipeline One to many when used as a lookup, fan out child records from a parent. Set oneToMany: true and pathToMany to the child array path so each child triggers a separate lookup. Once fanned out, the array element itself is the record see [One to many fan out]( one to many fan out the array element is the record) Response mapping when used as a lookup, extract fields from the lookup response back into the record. Configured on the flow's pageProcessors[] entry, but planned when building the lookup export. The response contains a data array and an errors array. Use data[0].fieldName when you expect a single result (e.g., fetching one order by ID). When multiple results are expected, map the whole array with extract: "data" (downstream steps then read it as a normal JSON array, or fan out over it with one to many), or use a lists entry with data[ ].fieldName extracts to build a reshaped array. Do not put data[ ].fieldName in a top level fields[].extract the wildcard is silently ignored there and nothing is merged. See [writing mappings Response Mapping Reference](../writing mappings/SKILL.md response mapping reference transformation 10). Response mapping uses Transformation 1.0 syntax (extract/generate pairs), not the newer expression based transforms postResponseMap hook JavaScript processing after response mapping merges the lookup response back into the record. Configured on the flow's pageProcessors[] entry, but planned when building the lookup export Export Execution Pipeline When a flow runs, each export executes this pipeline in strict order: 1. API request / query / file read fetches raw data from the external system 2. Response parsing resourcePath extracts the record array from the response body or file (e.g., http.response.resourcePath for HTTP, file.json.resourcePath for JSON files, XPath for XML) 3. Transformation (optional) transform reshapes individual records after extraction (Transformation 2.0) 4. Output filter (optional) discards records that don't match filter expression rules 5. preSavePage hook (optional) JavaScript processing on the full page of records Key distinction: resourcePath tells the export WHERE to find records in the response. Transforms reshape WHAT each record looks like after extraction. When a user says "extract records from X" or "treat each X as a separate record", that's almost always a resourcePath change, not a transform. Use transforms when you need to flatten nested objects, rename fields, or restructure individual records. Three Categories of Export Not all exports work the same way. Before building, understand which category you need: Listeners Receive data pushed to Celigo from an external system. No polling, no scheduling the source system sends data when events happen. WebhookExport inbound HTTP listener (no connection required) AS2Export AS2 EDI file reception Distributed exports ( type: "distributed" ) real time event driven push for NetSuite (via SuiteScript) and Salesforce (via streaming API). The platform installs listeners in the source system that fire when records change. Change data capture ( type: "stream" ) MongoDB change streams that tail the oplog for real time record changes. When to use: The source system supports outbound webhooks, push notifications, or change data capture and you want real time processing. File Transfers Read files from a remote location, then either parse them into records or transfer them as blobs. FTPExport / S3Export / FileSystemExport fetch files from FTP/SFTP, S3, or local filesystem HTTPExport with http.type: "file" fetch files over HTTP from cloud storage APIs (Google Drive, Box, Dropbox, Azure Blob Storage). The HTTP connector handles auth; the file{} config handles parsing. NetSuiteExport with netsuite.type: "file" fetch and parse files (CSV, JSON, XLSX, XML, EDI) from the NetSuite file cabinet Parsed mode ( file.output: "records" ) CSV, XML, JSON, XLSX, EDI files are parsed into individual records Blob mode ( type: "blob" ) binary files transferred as is without parsing. Supported on HTTPExport, NetSuiteExport, SalesforceExport, FTPExport, and S3Export. When to use: The source system drops files (CSV, EDI, XML, etc.) into a directory, bucket, file cabinet, or cloud storage rather than exposing a record based API. Record Based Exports Actively fetch batches of records from an API or database on a schedule. HTTPExport REST/GraphQL APIs NetSuiteExport saved searches, restlets, SuiteQL SalesforceExport SOQL/Bulk queries RDBMSExport SQL SELECT queries MongodbExport , JDBCExport , DynamodbExport other databases WrapperExport custom stack (Walmart, BigCommerce) When to use: You need to poll an API or query a database for records on a schedule (full fetch or delta/incremental). Quick Reference Adaptor Decision Matrix Your data comes from... Use adaptorType Category Read schema REST or GraphQL API HTTPExport Record based [http.yml](references/schemas/http.yml) Files over HTTP (Google Drive, Box, Dropbox, Azure Blob) HTTPExport with http.type: "file" File transfer [http.yml](references/schemas/http.yml) + [file.yml](references/schemas/file.yml) NetSuite (any method) NetSuiteExport Record based [netsuite.yml](references/schemas/netsuite.yml) Salesforce objects SalesforceExport Record based [salesforce.yml](references/schemas/salesforce.yml) SQL database RDBMSExport Record based [rdbms.yml](references/schemas/rdbms.yml) MongoDB MongodbExport Record based [mongodb.yml](references/schemas/mongodb.yml) JDBC database JDBCExport Record based [jdbc.yml](references/schemas/jdbc.yml) DynamoDB DynamodbExport Record based [dynamodb.yml](references/schemas/dynamodb.yml) Files on FTP/SFTP FTPExport File transfer [ftp.yml](references/schemas/ftp.yml) + [file.yml](references/schemas/file.yml) Files on S3 S3Export File transfer [s3.yml](references/schemas/s3.yml) + [file.yml](references/schemas/file.yml) Webhooks / push events WebhookExport Listener [webhook.yml](references/schemas/webhook.yml) AS2 EDI messages AS2Export Listener [as2.yml](references/schemas/as2.yml) Manual file upload SimpleExport File transfer [simple.yml](references/schemas/simple.yml) Local filesystem FileSystemExport File transfer [filesystem.yml](references/schemas/filesystem.yml) + [file.yml](references/schemas/file.yml) Pre built stack connector WrapperExport Record based [wrapper.yml](references/schemas/wrapper.yml) Raw HTTP is the fallback, not the default. Pick the most specific match, in order: 1. Native adaptor if the application has its own row (NetSuite, Salesforce, databases, FTP/S3), use it. Do not build an HTTPExport against that app's REST API. 2. Pre built HTTP connector for any other REST/GraphQL app, check the 550+ connector catalog before writing HTTP config (see [Check for a pre built connector]( 3 check for a pre built connector)). The step is still an HTTPExport , but it runs on a connector backed connection and takes its endpoint config from the connector. 3. Manual HTTP hand write the config from public API docs only when no connector exists or it doesn't cover the endpoint you need. adaptorType is case sensitive : HTTPExport , not httpExport . Minimum Required Fields Every export needs at minimum: name human readable label adaptorType from the matrix above connectionId except WebhookExport and SimpleExport Adaptor config block http{} , netsuite{} , ftp{} , salesforce{} , rdbms{} , etc. Which Schemas to Read 1. Always: [request.yml](references/schemas/request.yml) (base fields for all exports) 2. Plus: the adaptor specific file from the matrix above (e.g., http.yml for HTTPExport) 3. If file based: also [file.yml](references/schemas/file.yml) (CSV, XML, JSON, XLSX, EDI parsing config) 4. If delta/incremental: check [delta.yml](references/schemas/delta.yml) or Handlebars URI pattern ( {{{lastExportDateTime}}} ) 5. If cloning: [clone request.yml](references/schemas/clone request.yml), [clone response.yml](references/schemas/clone response.yml) Schema Index All schemas are in [references/schemas/](references/schemas/): Base fields (all exports): [request.yml](references/schemas/request.yml) Response shape: [response.yml](references/schemas/response.yml) Adaptor specific config: [http.yml](references/schemas/http.yml) HTTP/REST/GraphQL [netsuite.yml](references/schemas/netsuite.yml) NetSuite (restlet, saved search, SuiteQL, file cabinet) [salesforce.yml](references/schemas/salesforce.yml) Salesforce (SOQL, bulk) [ftp.yml](references/schemas/ftp.yml) FTP/SFTP [s3.yml](references/schemas/s3.yml) Amazon S3 [rdbms.yml](references/schemas/rdbms.yml) SQL databases [mongodb.yml](references/schemas/mongodb.yml) MongoDB [jdbc.yml](references/schemas/jdbc.yml) JDBC databases [dynamodb.yml](references/schemas/dynamodb.yml) DynamoDB [as2.yml](references/schemas/as2.yml) AS2 EDI [wrapper.yml](references/schemas/wrapper.yml) custom stack connectors [filesystem.yml](references/schemas/filesystem.yml) local filesystem [simple.yml](references/schemas/simple.yml) data loader / manual upload File parsing: [file.yml](references/schemas/file.yml) (CSV, XML, JSON, XLSX, EDI) Operational modes: [delta.yml](references/schemas/delta.yml), [webhook.yml](references/schemas/webhook.yml), [distributed.yml](references/schemas/distributed.yml), [once.yml](references/schemas/once.yml) Mock output: [mock output.yml](references/schemas/mock output.yml) Clone: [clone request.yml](references/schemas/clone request.yml), [clone response.yml](references/schemas/clone response.yml) Related Skills [configuring connections Quick Reference](../configuring connections/SKILL.md quick reference) connection types, auth methods, iClients [writing mappings Transformation 2.0](../writing mappings/SKILL.md transformation 20 workflow) reshape export output before mapping [writing scripts Data Pipeline Hooks](../writing scripts/SKILL.md data pipeline hooks) preSavePage, postResponseMap hooks [writing handlebars Quick Reference](../writing handlebars/SKILL.md quick reference) dynamic values in URIs, filters, delta tokens [building flows How to Build a Flow](../building flows/SKILL.md how to build a flow) wiring exports into flows [troubleshooting flows Diagnostic Workflow](../troubleshooting flows/SKILL.md diagnostic workflow) diagnosing export related failures <! TIER:2 How to Build an Export 1. Identify the target application What system are you pulling data from? This determines everything adaptor type, connection type, and configuration shape. 2. Check for existing patterns Before building from scratch, look at