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.

  1. Open any Google Sheet.

    It can be blank or existing — DaisySync works in both.

  2. Extensions → Get add-ons.

    Search for DaisySync and click Install.

  3. 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.

  4. 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.

  1. Log into DaisyBill.

    go.daisybill.com

  2. Navigate to Integration → API Tokens.
  3. Create a new token.

    Give it a recognizable name like "DaisySync — AR tracking spreadsheet."

  4. Copy the token.

    DaisyBill shows it once — copy to clipboard immediately. If you miss it, generate a new one.

Security: Your token stays in your Google Workspace's per-user properties (UserProperties). DaisySync never stores it, logs it, or transmits it anywhere except to go.daisybill.com.

03Connect & configure a sheet

  1. Paste your token.

    In the DaisySync sidebar, paste the token into the field and click Save. The status pill turns green — you're connected.

  2. Click the gear icon next to any sheet tab.

    This opens the Configure Sheet dialog.

  3. Pick a template.

    AR Aging, Denial Tracker, Bills Submitted, Payments, Remittances, Patient Ledger, and more. Each auto-selects the fields appropriate to that workflow.

  4. 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.

  5. 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.

Delta vs full refresh. Delta sync (default after first sync) is fast and catches late updates. Full refresh re-pulls everything — useful for reconciliation or if you suspect data drift. You can run either manually or schedule both.

05Templates

DaisySync ships with 10 ready-made templates, each mapped to a real billing workflow:

TemplateWhat it's for
AR AgingUnpaid bills bucketed by days outstanding (0–30, 31–60, 61–90, 91–120, 120+). Includes adjuster contact.
Denial TrackerDenied/rejected bills with submission history and SBR-1 deadline countdown.
Payments Posted & DepositedPayments joined to bills, deduped by check number, with deposit dates.
Bills SubmittedEvery bill with DOS, submission date, and payment rate %.
Bills with Balance DueBills that still have an outstanding balance.
Payments by Post DatePayments sorted by post date for monthly reconciliation.
Patient LedgerAll bills, submissions, and payments grouped by patient.
Payments LogOne row per individual payment — no bill-level dedup.
Submissions LogFull resubmission history for IBR/appeal tracking.
RemittancesCheck-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, or in. Combine rules with AND or OR.
  • Live match count: as you edit rules, a running ~N matches · sampled X cached bills indicator 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

  1. Open the sidebar → Advanced → Webhooks.
  2. Enter a username.

    Your email is fine — it isn't secret.

  3. 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.
  4. 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

  1. Integration → Webhooks → New Endpoint.
  2. Paste the Combined URL into the URL field.
  3. Event Types: click Select All.

    DaisySync routes events based on their type prefix. Missing event types = missing data.

  4. Leave the Basic Auth username and password fields blank.

    Credentials are already embedded in the URL. Apps Script can't read HTTP Authorization headers — this is a platform limitation, not a DaisySync choice.

  5. 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 prefixWhat 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:

FlagWhat happensRequired 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
Preflight: Before pushing, DaisySync checks that the sheet has the columns needed for the actions you queued. If anything is missing, you get a Setup needed dialog naming the exact columns to add in Configure Sheet → Fields — no per-row errors after the fact.
Write-back is off by default. Enable it per-sheet in Configure Sheet → Sync Settings → Enable creating new records from this sheet. This is intentional — pushing to DaisyBill is a one-way gate we don't want anyone hitting accidentally.

10Create new bills from the sheet

  1. Enable push on the target sheet.

    Configure Sheet → Sync Settings → check Enable creating new records from this sheet. Save.

  2. Sync the sheet once.

    This adds the Sync Status column.

  3. 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.

  4. Set Sync Status to CREATE.
  5. 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 ID column.

Attachments: Bills created via row push are saved in DaisyBill as Incomplete — without a clinical document, they can't be submitted to a payer. After push, open each bill in DaisyBill and upload the clinical note (SOAP, PR-2, CMS-1500, etc.). For single bills where you want to include a PDF attachment, use Extensions → DaisySync → Create Record instead — it supports base64 PDF upload and auto-submission.

11Write off bills in bulk

  1. Find the bills to close in any synced sheet.
  2. Type WRITE_OFF in the Sync Status column for each row.
  3. (Optional) Add a Note column with the reason. If not provided, DaisySync uses "Closed via DaisySync."
  4. Click sync icon → Push to DaisyBill. Each row's Sync Status flips from WRITE_OFFWritten off as it succeeds.

12File Second Review (SBR-1) appeals

  1. Mark rows. Type SBR-1 in the Sync Status column for each bill you want to appeal.
  2. (Optional) Add a Note column with the dispute reason. Default: "Underpayment dispute via DaisySync."
  3. 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 filed on 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

  1. Open the sidebar → Advanced → OMFS fee schedule.
  2. Paste your state's OMFS rates as CSV.

    Format: CPT,Modifier,Expected ($/unit) per line.

  3. Re-sync any sheet.

    The derived columns Derived: OMFS Expected, Derived: OMFS Variance, and Derived: 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

  1. In DaisyBill → Integration → Webhooks → click your endpoint.
  2. Check the delivery log — do events show 200 OK or errors?
  3. If 401 Unauthorized: the credentials in your URL don't match. Disable & re-enable in DaisySync, update DaisyBill with the new combined URL.
  4. If 200 OK but 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 _DaisySyncAuditLog sheet, if applicable

Still stuck?

Email us with your sheet ID and a screenshot. We usually reply within the business day (Pacific).

Email support