SQL Mirror Changelog
Last updated: April 24, 2026
Below is a log of changes to Switchboard's SQL Mirror. For more information about the SQL Mirror, including onboarding information and data reference, see the full collection of SQL Mirror documentation. For any feedback or questions, please email support@oneswitchboard.com.
April 2026
Couple small changes this month:
Added
donor_phonetoactblue_donationsAdded
count_messages_refundedandcount_segments_refundedtocharges_daily
March 2026
Added html_content and text_content to the email_blasts table. These columns contain the html or text template associated with an email blast.
February 2026
Big change this month is that we've added charge and credits data to the sql mirror! The two new tables are charges_daily and credits_daily. You can find more information about these tables and everything else in the mirror in the SQL mirror data docs.
Additional changes:
Added
street_addresscolumn tophonesandemailstablesAdded
creatorcolumn tobroadcaststable
December 2025
We have modified the phone_messages table to include incoming messages as well as more types of outbound messages. This change includes:
Adding a column called
message_directionto the tableAdding the additional types of outbound and incoming messages
If you have logic that assumes all messages in that table will be outbound broadcast messages (the current contents of the table), please update your tooling to select rows with message_direction equal to outbound and a non-null broadcast_id.
As always, check out the detailed mirror documentation for more information on what columns exist and what they mean.
November 2025
👀 Moving SQL Mirror to views
We are continuing to gradually move all SQL mirrors to the view-based structure! If we have not already migrated yours, you can expect it in the next couple weeks.
October 2025
📝 Improved documentation on email_messages
We added information to the email_messages documentation about the following fields: subject, html_content, text_content. These fields were already available in the mirror but were not previously listed in the documentation.
👀 Moving SQL Mirror to views
In the first few weeks of October, we will be migrating all SQL mirrors to a view-based structure. This will make your SQL mirror data more up-to-date and is part of our ongoing work to improve SQL mirror setup, so you can get your data faster!
It will result in the following changes:
Data will be more up-to-date (technical details below)
The icon for each table/view will change in the BigQuery interface, indicating that they are views instead of tables
The predicted amount of data scanned when querying a view will be significantly larger, but due to the internal structure of the data (see https://cloud.google.com/bigquery/docs/clustered-tables for more info), the actual amount of data scanned when querying your SQL mirror will be only slightly larger. If you are using on-demand pricing, the cost estimates will increase, but the actual costs should not be impacted significantly.
There will be a brief period of downtime as we migrate organizations to the new structure. Keep an eye out for additional communications from us about when to expect that for your organization.
Details on data freshness:
The underlying data used for the sql mirrors is updated on an ongoing basis. That data is materialized into base tables once an hour. Previously, there was then a second job that split the base tables into per-org tables. With this change, the per-org data will be views directly from the base tables, so they will be updated as soon as the hourly job is done running, instead of 15-45 minutes later. So data will be no more than an hour delayed usually.
🚨Column removal🚨
We removed the column opt_in_status from the phones table. We recently added a new column called is_opted_out that contains similar information; please migrate to using that column.
September 2025
📈 New Data
We have added information about associated city, state, and zip code to the phones and emails tables.
We have also changed the error code surfaced in phone_messages to use Switchboard maintained error codes. You can find out more about these error codes here.
August 2025
📈 New Data
You can now access data about saved searches and about phone opt out sources.
The new tables are:
saved_searchessaved_search_result_phonessaved_search_result_emailsphone_opt_outs
We've also added a new column to the phones table called is_opted_out (more on that below!).
As always, head on over to our SQL mirror documentation to learn more about these new tables.
🐛 Bug Fixes
We recently improved alignment between the phone_messages table and phone_message_actions so that more actions data is available in phone_messages.
Several fields in phone_messages related to delayed message activities are not 100% complete. The most accurate sources for donations and actions data are phone_message_actions and actblue_donations. Read through the docs, including the updated note in phone_messages, for more information.
🔜 Future Plans
🚨Upcoming column removal🚨
At the beginning of October, we will be removing the column opt_in_status from the phones table. We recently added a new column called is_opted_out that contains similar information; please migrate to using that column between now and October.
Some additional details on these two columns:
The existing column, opt_in_status, is a string that contains one of three possible values, opted_out, opted_in, or unknown.
The new column, is_opted_out, is a boolean that is True if a phone has opted out (eg, if it would have the value opted_out in the old column). It does not contain information on if a phone is unknown vs opted in.
Please reach out to us at support@oneswitchboard.com if you have any questions or concerns about this change!