DaisySync help.
Everything you need to install, connect, configure, and get the most out of DaisySync. If anything here is unclear, email us — we respond within one business day.
01Install DaisySync
DaisySync is a Google Workspace add-on. Installation takes about a minute.
-
Open any Google Sheet.
It can be blank or existing — DaisySync works in both.
-
Extensions → Get add-ons.
Search for DaisySync and click Install.
-
Grant the requested permissions.
DaisySync requests the minimum scopes it needs (access to the current sheet only, outbound HTTPS to
go.daisybill.com, email yourself notifications, and create scheduled triggers). Read the privacy policy. -
Open it.
After install, go to Extensions → DaisySync → Open DaisySync. The sidebar appears on the right.
02Get your DaisyBill API token
DaisySync talks to DaisyBill's REST API with a Bearer token. You generate that token inside DaisyBill.
- Log into DaisyBill.
- Navigate to Integration → API Tokens.
-
Create a new token.
Give it a recognizable name like "DaisySync — AR tracking spreadsheet."
-
Copy the token.
DaisyBill shows it once — copy to clipboard immediately. If you miss it, generate a new one.
UserProperties). DaisySync never stores it, logs it, or transmits it anywhere except to go.daisybill.com.
03Connect & configure a sheet
-
Paste your token.
In the DaisySync sidebar, paste the token into the field and click Save. The status pill turns green — you're connected.
-
Click the gear icon next to any sheet tab.
This opens the Configure Sheet dialog.
-
Pick a template.
AR Aging, Denial Tracker, Bills Submitted, Payments, Remittances, Patient Ledger, and more. Each auto-selects the fields appropriate to that workflow.
-
Customize.
Drag fields to reorder, add or remove any columns, apply one-click filter chips (Unpaid only, Denied only, Aging 90+, SBR-1 candidates, Underpaid vs OMFS), pick your billing providers, set a sort order.
-
Save.
Your configuration is stored per-sheet. You can configure every sheet in the workbook independently.
04Run your first sync
Click the sync icon in the sidebar → Sync. Your first sync may take several minutes for large accounts — it runs in the background and emails you when done.
After that first sync, DaisySync uses delta sync by default. It queries DaisyBill with updated_at[gteq]=<last_sync> so every status change, new payment, and denial on existing bills comes through — not just newly created bills. This is the subtle bug in most naive integrations, and the reason DaisySync exists.
05Templates
DaisySync ships with 10 ready-made templates, each mapped to a real billing workflow:
| Template | What it's for |
|---|---|
| AR Aging | Unpaid bills bucketed by days outstanding (0–30, 31–60, 61–90, 91–120, 120+). Includes adjuster contact. |
| Denial Tracker | Denied/rejected bills with submission history and SBR-1 deadline countdown. |
| Payments Posted & Deposited | Payments joined to bills, deduped by check number, with deposit dates. |
| Bills Submitted | Every bill with DOS, submission date, and payment rate %. |
| Bills with Balance Due | Bills that still have an outstanding balance. |
| Payments by Post Date | Payments sorted by post date for monthly reconciliation. |
| Patient Ledger | All bills, submissions, and payments grouped by patient. |
| Payments Log | One row per individual payment — no bill-level dedup. |
| Submissions Log | Full resubmission history for IBR/appeal tracking. |
| Remittances | Check-level view — one row per deposited check. |
You can pick any combination of fields for any template — the template just provides sensible defaults.
06Filters & live match count
Inside the Configure Sheet dialog, the Filters section supports:
- One-click preset chips: Unpaid only, Fully paid, Denied only, Aging 90+ days, SBR-1 candidates, Underpaid vs OMFS, Has any payment.
- Custom rules: pick any field and compare with
=,!=,>,>=,<,<=,contains,not_contains, orin. Combine rules with AND or OR. - Live match count: as you edit rules, a running
~N matches · sampled X cached billsindicator shows the estimated output row count before you commit to a full sync. No guessing what a filter returns.
07Schedules & Sync All
Each sheet has independent schedule settings inside its Configure Sheet → Sync Settings panel:
- Auto-sync frequency (hourly delta): every 1–12 hours or disabled.
- Full refresh frequency: daily, weekly, biweekly, monthly, or never — on a specific day & hour.
From the sidebar's Sync All Sheets panel, you can also run or schedule a single cross-sheet sync for every configured sheet at once. Every scheduled run is trigger-based and respects Google Workspace's quota limits.
08Near-real-time webhooks
Webhooks let DaisyBill push new bills, payments, and status updates to your spreadsheet within seconds — instead of waiting for the next scheduled sync. Setup is optional: scheduled polling works fine without it.
Step 1 — In DaisySync
- Open the sidebar → Advanced → Webhooks.
-
Enter a username.
Your email is fine — it isn't secret.
-
Click Generate for a strong random password.
Minimum 16 characters; 32 recommended. DaisySync copies it to your clipboard.
Never reuse your DaisyBill login password here. This is a separate shared secret just for webhook authentication. Reusing your account password would be a security risk. -
Click Enable.
A yellow panel shows a Combined URL that includes your webhook credentials. Click Copy.
Copy the URL now. For security, DaisySync never stores the plaintext password — this is the only moment the combined URL is shown. If you miss it, disable and re-enable with a new password.
Step 2 — In DaisyBill
- Integration → Webhooks → New Endpoint.
- Paste the Combined URL into the URL field.
-
Event Types: click Select All.
DaisySync routes events based on their type prefix. Missing event types = missing data.
-
Leave the Basic Auth username and password fields blank.
Credentials are already embedded in the URL. Apps Script can't read HTTP
Authorizationheaders — this is a platform limitation, not a DaisySync choice. - Click Create.
How events drive sync
When DaisyBill sends an event, DaisySync records a timestamp on your behalf. The next time you open the DaisySync sidebar, any sheet touched since its last sync auto-syncs in the background. You'll see the fresh data on next page load — no click required.
What events DaisySync uses
| Event prefix | What it triggers |
|---|---|
bill.* | Bill created, updated, or status changed |
bill_submission.* / submission.* | New submission, response received |
bill_payment.* / payment.* | Payment received, voided, reallocated |
remittance.* | Check deposited, remittance updated |
patient.* | Patient demographics changed |
injury.* | Injury details updated |
billing_provider.* | Billing provider cache invalidation |
Unknown event types are safely ignored — if DaisyBill adds new events, they won't break anything.
09How write-back works
DaisySync is two-way. You don't just pull data from DaisyBill — you can push changes back from your sheet.
On every sync (when write-back is enabled), DaisySync appends a Sync Status column to your sheet. Mark a row with one of these flags, then click sync icon → Push to DaisyBill:
| Flag | What happens | Required columns |
|---|---|---|
CREATE |
Creates a new bill in DaisyBill | Patient: First Name, Patient: Last Name, Bill: DOS, Bill: Diagnosis Codes, Bill: Procedure Code |
WRITE_OFF |
Closes an existing bill via POST /bills/:id/write_offs |
Bill: Bill ID |
SBR-1 |
Files a Second Review appeal via POST /bills/:id/requests_for_second_review |
Bill: Bill ID |
10Create new bills from the sheet
-
Enable push on the target sheet.
Configure Sheet → Sync Settings → check Enable creating new records from this sheet. Save.
-
Sync the sheet once.
This adds the
Sync Statuscolumn. -
Add rows with the required fields filled in.
Patient: First Name, Patient: Last Name, Bill: DOS, Bill: Diagnosis Codes, Bill: Procedure Code. Optional: Billing Provider: Last Name (falls back to first provider), Place Of Service: Nickname, Bill: Units, Bill: Authorization Number.
-
Set Sync Status to
CREATE. -
Click the sync icon → Push to DaisyBill.
DaisySync creates each row as a new bill. The new Bill ID is written back into the
Bill: Bill IDcolumn.
11Write off bills in bulk
- Find the bills to close in any synced sheet.
- Type
WRITE_OFFin the Sync Status column for each row. - (Optional) Add a
Notecolumn with the reason. If not provided, DaisySync uses "Closed via DaisySync." - Click sync icon → Push to DaisyBill. Each row's Sync Status flips from
WRITE_OFF→Written offas it succeeds.
12File Second Review (SBR-1) appeals
- Mark rows. Type
SBR-1in the Sync Status column for each bill you want to appeal. - (Optional) Add a
Notecolumn with the dispute reason. Default: "Underpayment dispute via DaisySync." - Push to DaisyBill. DaisySync fetches each bill's service line items and files a dispute covering all of them. The Sync Status cell flips to
SBR-1 filedon success.
Use the SBR-1 candidates filter chip in Configure Sheet to quickly surface bills over 30 days since submission with a balance due.
13OMFS variance analysis
- Open the sidebar → Advanced → OMFS fee schedule.
-
Paste your state's OMFS rates as CSV.
Format:
CPT,Modifier,Expected ($/unit)per line. -
Re-sync any sheet.
The derived columns
Derived: OMFS Expected,Derived: OMFS Variance, andDerived: OMFS Variance %populate automatically.
Negative variance = underpayment. Use the Underpaid vs OMFS filter chip to surface every bill where you were paid less than the fee schedule requires — then mark them SBR-1 and push.
14Audit log
DaisySync writes every sync to a hidden _DaisySyncAuditLog sheet inside your spreadsheet. Each row records timestamp, user email, sheet name, sync type (delta / full), row count, duration, and status.
The audit log supports HIPAA §164.528 accounting of disclosures requirements out of the box. To unhide it: View → Show hidden sheets → _DaisySyncAuditLog.
The sidebar's Recent Activity panel reads from this same log.
15Disconnect & wipe data
To completely remove DaisySync from a spreadsheet:
Extensions → DaisySync → Disconnect & Wipe Data
This atomically removes your API token, every per-sheet configuration, every scheduled trigger, and every hidden DaisySync cache sheet (_DaisyBillCache, _DaisySyncAuditLog, _DaisySyncOMFS, _DaisySyncWebhookQueue). Your synced data rows remain in the visible sheets — those are your spreadsheet contents and won't be touched.
16Privacy & HIPAA
- DaisySync runs entirely inside your Google Workspace account. No data flows to developer-owned servers.
- All syncs, caches, and configs are per-spreadsheet. Other customers can't see your data; you can't see theirs.
- Your DaisyBill API token is stored in your per-user Google Workspace properties (not shared with other editors of the same spreadsheet).
- If your Google Workspace edition supports it with an executed Google BAA, DaisySync's architecture supports HIPAA-regulated workflows. A DaisySync BAA is available on request.
Full details: privacy policy · terms of service · Business Associate Agreement.
17Google Workspace edition
For non-PHI use, any Google Workspace edition works (including free @gmail.com accounts).
For workers' comp billing (which is PHI under HIPAA):
- Required: Google Workspace Business Plus or higher, with an executed Google BAA in force.
- Recommended: Enterprise editions for full Vault / retention controls.
- Not permitted: Free @gmail.com — Google doesn't sign BAAs for these, so no HIPAA workflow is legal.
18Troubleshooting
"Webhooks aren't available for this install yet"
The publisher hasn't deployed the webhook endpoint for this version. Contact support.
Events not appearing in my sheet
- In DaisyBill → Integration → Webhooks → click your endpoint.
- Check the delivery log — do events show
200 OKor errors? - If
401 Unauthorized: the credentials in your URL don't match. Disable & re-enable in DaisySync, update DaisyBill with the new combined URL. - If
200 OKbut sheets aren't refreshing when you open DaisySync: check the Activity panel (sidebar → Advanced → Webhooks). If counts are going up but sheets don't refresh, click Sync manually on the sheet to force a delta sync and check the audit log for errors.
"No Sync Status column found. Sync the sheet first."
DaisySync auto-adds the Sync Status column on every sync (when push is enabled). Enable push in Configure Sheet → Sync Settings, sync once, then push.
"CREATE rows need these columns…" or "WRITE_OFF and SBR-1 rows need a Bill: Bill ID column"
Preflight is telling you the sheet is missing fields required for the action you queued. Open Configure Sheet → Fields, add the named columns, Save, re-sync, then push.
First sync is taking forever
For practices with thousands of bills, the initial sync can take 10–30 minutes — DaisyBill's API limit is 25 records per page. Subsequent delta syncs are fast (typically 30–60 seconds) because they only pull records updated since the last sync. You'll receive an email when the initial sync completes.
Trigger quota exceeded
Google caps Apps Script time-based triggers at 20 per user. If you have many scheduled sheets, you may hit this limit. DaisySync auto-reconciles orphaned triggers on sidebar open, but if you see this error, open the sidebar — reconciliation runs automatically and frees up slots.
Is my DaisyBill data passing through the developer's servers?
No. The add-on runs entirely inside your own Google Apps Script environment. The only data DaisySync has on shared infrastructure is a SHA-256 hash of your webhook-only credentials mapped to your spreadsheet ID — used solely for routing incoming webhooks. No PHI, no tokens, no billing data. See the privacy policy.
19Contact support
Email support@daisysync.com. Response time: one business day (Pacific).
When reporting a bug, include:
- Your spreadsheet ID (from the URL)
- The last-sync timestamp shown in the header cell's note
- A screenshot of what you expected vs. what you got
- The relevant row from the
_DaisySyncAuditLogsheet, if applicable
Still stuck?
Email us with your sheet ID and a screenshot. We usually reply within the business day (Pacific).