Cycle Source
The Cycle source extracts customer data from Cycle CRM workspaces via the GraphQL API.
Installation
Section titled “Installation”pip install bizon[cycle]Quick Start
Section titled “Quick Start”name: cycle-pipeline
source: name: cycle stream: customers slug: your-workspace-slug authentication: type: api_key params: token: BIZON_ENV_CYCLE_TOKEN
destination: name: bigquery config: project_id: my-project dataset_id: crm gcs_buffer_bucket: my-bucketAvailable Streams
Section titled “Available Streams”| Stream | Description | Incremental |
|---|---|---|
customers | CRM customers with company data | No |
Configuration
Section titled “Configuration”Source Configuration
Section titled “Source Configuration”| Field | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Cycle workspace slug |
Authentication
Section titled “Authentication”Cycle uses API key authentication:
source: name: cycle stream: customers slug: my-workspace authentication: type: api_key params: token: BIZON_ENV_CYCLE_TOKENTo get your API token:
- Log in to your Cycle workspace
- Go to Settings > API
- Generate a new API token
- Copy and store securely
Example Configuration
Section titled “Example Configuration”Customers to BigQuery
Section titled “Customers to BigQuery”name: cycle-customers
source: name: cycle stream: customers slug: my-workspace authentication: type: api_key params: token: BIZON_ENV_CYCLE_TOKEN
destination: name: bigquery config: project_id: my-project dataset_id: crm dataset_location: US gcs_buffer_bucket: my-staging-bucket record_schemas: - destination_id: my-project.crm.customers record_schema: - name: id type: STRING mode: REQUIRED - name: email type: STRING mode: NULLABLE - name: name type: STRING mode: NULLABLE - name: company type: JSON mode: NULLABLEData Structure
Section titled “Data Structure”Customer records include:
| Field | Description |
|---|---|
id | Customer ID |
email | Customer email address |
name | Customer name |
company | Company object with id, name, domain |
Company Object
Section titled “Company Object”| Field | Description |
|---|---|
id | Company ID |
name | Company name |
domain | Company domain |
Transforms
Section titled “Transforms”Flatten company data:
transforms: - label: flatten-company python: | company = data.get('company', {}) or {} data = { 'id': data.get('id'), 'email': data.get('email'), 'name': data.get('name'), 'company_id': company.get('id'), 'company_name': company.get('name'), 'company_domain': company.get('domain') }Next Steps
Section titled “Next Steps”- Sources Overview - Learn about source connectors
- Authentication - Configure auth methods
- Transforms - Transform extracted data