# Custom Integration - Manual Two Way Sync

**URL:** <https://community.fibery.io/t/custom-integration-manual-two-way-sync/7464>\
**Category:** Ideas & Features\
**Created:** [September 30, 2024, 6:13am UTC](https://community.fibery.io/t/custom-integration-manual-two-way-sync/7464 "2024-09-30T06:13:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tommy\_Hedley](https://sea2.discourse-cdn.com/flex020/user_avatar/community.fibery.io/tommy_hedley/32/6468_2.png) [@Tommy\_Hedley](https://community.fibery.io/u/Tommy_Hedley)\
**Post date:** [September 30, 2024, 6:13am UTC](https://community.fibery.io/t/custom-integration-manual-two-way-sync/7464/1 "2024-09-30T06:13:23Z")

</div>

I have been working on a Quickbooks Time/TSheet integration with the intention of using it to set up a two-way sync. Rather than the automatic syncing demonstrated in the Jira integration, this integration uses buttons to manually save/revert changes. The current workflow works something like this:

1. Get Quickbooks Time data at a set interval (no webhook is available from QB Time)
2. Create/Update/Delete entities using rules in a mirror writeable database for each datatype that you would like to edit. Generally this means have two spaces, one for the integration and one for the editable data.
3. Use buttons in the editable databased to make Create/Update/Delete requests to the integration app (I prefer to post to the integration app and then to QB Time so I can managed the integration app security rather than having to put QB Time API keys in the script)
4. On success, automatically update the corresponding entities using a webhook from the integration app.

This is a very broad overview and there are lots of little details to get right, however in the process of creating it I realized there were a few features that could massively simplify the process:

1. **Batch arguments for External Actions**

2. **Entity creation in integration DBs**

3. **Add editable fields to be added via integration schema**

These changes should make fairly straightforward to make manual two-way sync integrations. Here would be the improved workflow:

1. Get Quickbooks Time data at a set interval. If the pre-sync editable and read-only fields match (ie. they are synced), overwrite both the editable and read-only fields. If they do not match (ie. there are unsaved changes) overwrite the read-only fields and set an _pending changes_ checkbox to true.
2. Update the editable fields as desired or create a new entity. Changes/additions can either be posted to the integration app (Save button) or reverted to the values of the readonly fields (Revert button). Updates are grouped in batches to limit requests.
3. On success from TSheets, update the readonly fields of the respective using a webhook from the integration app.

I would also probably set up a formula that returns different status values based on different checkboxes. (ie. “Synced”, “Pending Changes”, “Incoming Changes”, ect.)
