GitHub Sync¶
GitHub Sync exports your Zendesk configuration as human-readable YAML to a GitHub repository you own, creating a full Git history of every change -- whether applied through Configly or detected as external drift.
Plan availability
GitHub Sync is available on Multi-Instance, Agency, and Beta plans. It is not available on Trial or Solo plans.
Why GitHub Sync?¶
- Full Git history of every Zendesk configuration change with human-readable diffs
- External backup of all configuration in a portable, searchable format
- Team collaboration via GitHub notifications, blame, and search
- Audit trail with meaningful commit messages and real author attribution
- Foundation for future PR-based review workflows and multi-instance promotion
How to Connect GitHub¶
- Go to Settings > Integrations
- Click Connect on the GitHub card
- Authorize Configly via GitHub OAuth
- Choose an existing repository or create a new one
- Optionally exclude specific object types you don't want synced
- Configly performs an initial export of your entire Zendesk configuration
- Done -- your configuration is now version-controlled
The initial export serialises all enabled object types to YAML and commits them to your repository in a single commit.
Repository Structure¶
All Zendesk instances for your account write to a single repository. Each instance gets its own folder named after its Zendesk subdomain:
my-config-repo/
acme-corp/
triggers/
auto-assign-billing.yaml
escalation-urgent.yaml
automations/
close-stale-tickets.yaml
macros/
apply-billing-tag.yaml
views/
unassigned-tickets.yaml
.configly/
id-map.yaml
sandbox-acme/
triggers/
...
File naming: Object titles are slugified (lowercase, hyphens, no special characters). If two objects produce the same slug, the Zendesk object ID is appended (e.g., my-trigger-12345.yaml).
ID mapping: The .configly/id-map.yaml file tracks the relationship between file names and Zendesk object IDs, ensuring round-trip fidelity.
YAML Format¶
Each configuration object is serialised as clean, human-readable YAML. Zendesk API noise is stripped out -- only meaningful configuration fields are included. Numeric IDs are removed where possible and replaced with human-readable references.
This makes diffs in GitHub meaningful and easy to review:
# Example: triggers/auto-assign-billing.yaml
title: Auto-assign to billing team
active: true
conditions:
all:
- field: group
operator: is
value: Billing
actions:
- field: assignee
value: [email protected]
How Auto-Commit Works¶
When GitHub is connected, every configuration change flows to your repository automatically:
Apply Changes¶
When you apply changes to Zendesk through Configly, the changed objects are serialised to YAML and committed to GitHub in the same operation. The commit message includes your change reason and the commit is attributed to you (your name and email from your Configly account).
You don't need to take any extra action -- GitHub stays in sync transparently.
Drift Detection¶
When Configly detects that someone changed your Zendesk configuration outside of Configly (external drift), those changes are queued as pending commits. You'll see a drift banner on your connection dashboard.
To commit drift changes:
- Click the drift banner or go to Settings > Integrations
- Review the list of pending changes
- Enter a mandatory change reason explaining what happened
- Click Commit -- the changes are serialised and pushed to GitHub
Pending commits are not auto-committed because Configly requires a human-provided reason for every change in the Git history.
Commit Author Attribution¶
Every Git commit uses your real name and email (from your Configly account) as the commit author. This means git log, git blame, and GitHub's commit history all show the actual person who made or acknowledged the change -- not a generic bot account.
- Apply commits: attributed to the user who clicked Apply
- Drift commits: attributed to the user who provided the change reason
- Initial export: attributed to the user who connected GitHub
Object Type Exclusion¶
You can exclude specific object types from GitHub sync via the exclusion settings on the Integrations page. Excluded types are never serialised to YAML and are filtered from drift detection.
Use cases:
- Webhook configs that may contain API tokens or secrets in their URLs
- Object types that change frequently but have low audit value
- Types with sensitive data that shouldn't be in a shared repository
Default: All types are included. You opt out of specific types rather than opting in. Changing the exclusion list triggers a cleanup commit (removes excluded type folders) and a re-export commit (adds any newly included types).
Apply History Integration¶
The Apply History page shows a GitHub column with commit SHA links for each apply operation. Click the SHA to view the exact commit in GitHub, showing the YAML diff for that apply.
Disconnecting GitHub¶
If you disconnect GitHub from Settings > Integrations:
- The OAuth token is revoked
- The connection is removed from Configly
- Your repository and all Git history are preserved -- nothing is deleted from GitHub
- Apply Changes continues to work normally without GitHub integration
You can reconnect at any time to resume syncing.
Next Steps¶
- Apply Changes -- push tested changes to Zendesk
- Instance Settings -- choose which types to sync
- Dashboard -- monitor your connections