Dear Ryan,
CausalImpact adopts a different approach than the one underlying classical synthetic control estimators. In these classical estimators, a vector of static observables is used to find the weights that form the synthetic control (e.g., demographic data). In CausalImpact, by contrast, we use the full response time-series in the pre-period to do the matching. This has several advantages. For details, see the third paragraph on p. 5 of the
paper.
In your example, you'd use sales data from the 10 non-treated cities to predict the sales you would have expected to see in Austin if you hadn't introduced a fourth widget. The demographic data from the cities are not used here - the best predictors are chosen purely based on how predictive each city has been in the past.
Best wishes,
Kay