Hmm, no. The table can have the columns (user_id, prompt, response). It works for as many questions as you want to ask. One row per user-prompt pair with a response.
So what would be the best way, once a user logs in, to see if there are any campaigns that apply to them?
Only you know that. We don't know the business rules that define these prompts. Depending on the rules, you might simply code them as some conditionals and database queries in a bit of code you run when the user logs in, if they're complex but generalizable maybe you store them in a database and have some code that can map that database table to how to check if a user matches any of the campaigns.
If it's simple as "has user logged in 45 times and not answered that prompt before", then at login, you run a database query to check if the user has logged in 45 times and hasn't answered that prompt already.
SELECT COUNT(*) FROM users LEFT OUTER JOIN prompts ON prompts.user_id = users.id AND prompts.prompt = 'logged_in_45' WHERE users.id = X AND users.login_count >= 45 AND prompts.answer IS NULL
If 1 then prompt, else this rule doesn't apply.