Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Status Code Climate Test Coverage Gem Version

Zendesk input plugin for Embulk

Embulk input plugin for loading Zendesk records.


Required Embulk version >= 0.9.6.

NOTE This plugin don't support JSON type columns e.g. custom fields, tags, etc for now. But they will be supported soon.

  • Plugin type: input
  • Resume supported: no
  • Cleanup supported: no
  • Guess supported: no


  • login_url: Login URL for Zendesk (string, required)
  • auth_method: basic, token, or oauth. For more detail on zendesk document. (string, required)
  • target: Which export Zendesk resource. Currently supported are tickets, ticket_events, users, organizations, ticket_fields, ticket_forms, ticket_metrics, scores, recipients, object_records, relationship_records or user_events. (string, required)
  • includes: Will fetch sub resources. For example, ticket has ticket_audits, ticket_comments. See below example config. (array, default: [])
  • username: The user name a.k.a. email. Required if auth_method is basic or token. (string, default: null)
  • password: Password. required if auth_method is basic. (string, default: null)
  • token: Token. required if auth_method is token. (string, default: null)
  • access_token: OAuth Access Token. required if auth_method is oauth. (string, default: null)
  • start_time: Start export from this time if present. (string, default: null)
  • retry_limit: Try to retry this times (integer, default: 5)
  • retry_initial_wait_sec: Wait seconds for exponential backoff initial value (integer, default: 4)
  • incremental: If false, start_time in next.yml would not be updated that means you always fetch all of data from Zendesk with statically conditions. If true, start_time would be updated in next.yml. (bool, default: true)
  • dedup: Zendesk incremental API is not designed to protect against duplication. In order to de-dup records, plugin has to cache fetched IDs in memory. If you're importing a large dataset (eg. tens of millions of records), it can lead to OOM error, depends on your configured heap size. In such cases, you can set this option to false, but keep in mind that result may contain duplicated records. (bool, default: true)
  • app_marketplace_integration_name: Invisible to user, only requires to be a part of the Zendesk Apps Marketplace. This should be used to name of the integration.
  • app_marketplace_org_id: Invisible to user, only requires to be a part of the Zendesk Apps Marketplace. This should be the Organization ID for your organization from the new developer portal.
  • app_marketplace_app_id: Invisible to user, only requires to be a part of the Zendesk Apps Marketplace. This is the “App ID” that will be assigned to you when you submit your app.
  • object_types: List custom object types, required if target is object_records.
  • relationship_types: List custom relationship types, required if target is relationship_records.
  • profile_source: Profile source of user event, required if target is user_events.
  • user_event_source: Source of user event, required if target is user_events.
  • user_event_type: Type of user event, required if target is user_events.


  type: zendesk
  auth_method: token
  token: 6wiIBWbGkBMo1mRDMuVwkw1EPsNkeUj95PIz2akv
  target: tickets
    - audits
    - comments
  start_time: "2015-01-01 00:00:00+0000"


$ ./gradlew package

@Config("object_types") @ConfigDefault("[]") List getObjectTypes();

    List<String> getRelationshipTypes();

    Optional<String> getProfileSource();

    Optional<String> getEndTime();

    Optional<String> getUserEventType();

    Optional<String> getUserEventSource();