diff --git a/ghost/core/core/server/services/email-analytics/lib/queries.ts b/ghost/core/core/server/services/email-analytics/lib/queries.ts index 92a52233594..e155fcf144e 100644 --- a/ghost/core/core/server/services/email-analytics/lib/queries.ts +++ b/ghost/core/core/server/services/email-analytics/lib/queries.ts @@ -175,6 +175,7 @@ export class Queries { id: new ObjectID().toHexString(), name: jobName, [updateField]: date.toISOString(), // force to iso string for sqlite + created_at: date.toISOString(), // force to iso string for sqlite updated_at: date.toISOString(), // force to iso string for sqlite status: status }); diff --git a/ghost/core/test/unit/server/services/email-analytics/queries.test.ts b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts index 6c50e360a27..c7e894f755e 100644 --- a/ghost/core/test/unit/server/services/email-analytics/queries.test.ts +++ b/ghost/core/test/unit/server/services/email-analytics/queries.test.ts @@ -269,6 +269,17 @@ describe('Email analytics queries', function () { assert.equal(job.status, 'finished'); }); + it('creates missing job with created timestamp', async function () { + const date = new Date('2026-08-11T10:00:00.000Z'); + + await queries.setJobTimestamp('email-analytics-missing', 'started', date); + + const job = await knex('jobs').where('name', 'email-analytics-missing').first(); + assert.equal(new Date(job.created_at).toISOString(), date.toISOString()); + assert.equal(new Date(job.started_at).toISOString(), date.toISOString()); + assert.equal(new Date(job.updated_at).toISOString(), date.toISOString()); + }); + it('swallows database errors', async function () { await knex.schema.dropTable('jobs');