Credit goes to Clodoaldo Neto for his answer.
I'm putting my answer here because while his answer did point me in the direction it is slightly different, and I've simplified mine a bit.
WITH
existing AS (SELECT id FROM tag WHERE text='hey'),
new AS (INSERT INTO tag (text) SELECT 'hey' WHERE NOT EXISTS (SELECT 1 FROM existing) RETURNING id)
SELECT id FROM existing UNION ALL SELECT id FROM new