diff --git a/services/wercker/wercker.service.js b/services/wercker/wercker.service.js
index d15d969f84f21bfeb717f6895a3c64faf163c46f..1831b542905ce43d79139682331ae7c55128077f 100644
--- a/services/wercker/wercker.service.js
+++ b/services/wercker/wercker.service.js
@@ -1,130 +1,11 @@
-import Joi from 'joi'
-import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js'
-import { BaseJsonService } from '../index.js'
+import { deprecatedService } from '../index.js'
 
-const werckerSchema = Joi.array()
-  .items(
-    Joi.object({
-      result: isBuildStatus,
-    })
-  )
-  .min(0)
-  .max(1)
-  .required()
-
-const werckerCIDocumentation = `
-<p>
-  Note that Wercker badge Key (used in Wercker's native badge urls) is not the same as
-  the Application Id and the badge key will not work.
-</p>
-<p>
-  You can use the Wercker API to locate your Application Id:
-  <br />
-  <br />
-  https://app.wercker.com/api/v3/applications/:username/:applicationName
-  <br />
-  For example: https://app.wercker.com/api/v3/applications/wercker/go-wercker-api
-  <br />
-  <br />
-  Your Application Id will be in the 'id' field in the API response.
-</p>
-`
-
-export default class Wercker extends BaseJsonService {
-  static category = 'build'
-
-  static route = {
+export default deprecatedService({
+  category: 'build',
+  route: {
     base: 'wercker',
-    format:
-      '(?:(?:ci/)([a-fA-F0-9]{24})|(?:build|ci)/([^/]+/[^/]+?))(?:/(.+?))?',
-    capture: ['projectId', 'applicationName', 'branch'],
-  }
-
-  static examples = [
-    {
-      title: 'Wercker CI Run',
-      pattern: 'ci/:applicationId',
-      namedParams: { applicationId: '559e33c8e982fc615500b357' },
-      staticPreview: this.render({ result: 'passed' }),
-      documentation: werckerCIDocumentation,
-    },
-    {
-      title: 'Wercker CI Run (branch)',
-      pattern: 'ci/:applicationId/:branch',
-      namedParams: {
-        applicationId: '559e33c8e982fc615500b357',
-        branch: 'master',
-      },
-      staticPreview: this.render({ result: 'passed' }),
-      documentation: werckerCIDocumentation,
-    },
-    {
-      title: 'Wercker Build',
-      pattern: 'build/:userName/:applicationName',
-      namedParams: {
-        userName: 'wercker',
-        applicationName: 'go-wercker-api',
-      },
-      staticPreview: this.render({ result: 'passed' }),
-    },
-    {
-      title: 'Wercker Build (branch)',
-      pattern: 'build/:userName/:applicationName/:branch',
-      namedParams: {
-        userName: 'wercker',
-        applicationName: 'go-wercker-api',
-        branch: 'master',
-      },
-      staticPreview: this.render({ result: 'passed' }),
-    },
-  ]
-
-  static render({ result }) {
-    return renderBuildStatusBadge({ status: result })
-  }
-
-  static getBaseUrl({ projectId, applicationName }) {
-    if (applicationName) {
-      return `https://app.wercker.com/api/v3/applications/${applicationName}/builds`
-    } else {
-      return `https://app.wercker.com/api/v3/runs?applicationId=${projectId}`
-    }
-  }
-
-  async fetch({ projectId, applicationName, branch }) {
-    let url
-    const searchParams = { branch, limit: 1 }
-
-    if (applicationName) {
-      url = `https://app.wercker.com/api/v3/applications/${applicationName}/builds`
-    } else {
-      url = 'https://app.wercker.com/api/v3/runs'
-      searchParams.applicationId = projectId
-    }
-
-    return this._requestJson({
-      schema: werckerSchema,
-      url,
-      options: { searchParams },
-      errorMessages: {
-        401: 'private application not supported',
-        404: 'application not found',
-      },
-    })
-  }
-
-  async handle({ projectId, applicationName, branch }) {
-    const json = await this.fetch({
-      projectId,
-      applicationName,
-      branch,
-    })
-    if (json.length === 0) {
-      return this.constructor.render({
-        result: 'not built',
-      })
-    }
-    const { result } = json[0]
-    return this.constructor.render({ result })
-  }
-}
+    pattern: ':various*',
+  },
+  label: 'wercker',
+  dateAdded: new Date('2022-11-18'),
+})
diff --git a/services/wercker/wercker.tester.js b/services/wercker/wercker.tester.js
index bcbd29368db1b0c794c6e98dec2dcae7ce9c9ad4..64af7d538256f6bc214889c19397ce996b7f2659 100644
--- a/services/wercker/wercker.tester.js
+++ b/services/wercker/wercker.tester.js
@@ -1,58 +1,14 @@
-import { isBuildStatus } from '../build-status.js'
-import { createServiceTester } from '../tester.js'
-export const t = await createServiceTester()
-
-t.create('Build status')
-  .get('/build/wercker/go-wercker-api.json')
-  .expectBadge({ label: 'build', message: isBuildStatus })
-
-t.create('Build status (with branch)')
-  .get('/build/wercker/go-wercker-api/master.json')
-  .expectBadge({ label: 'build', message: isBuildStatus })
-
-t.create('Build status (application not found)')
-  .get('/build/some-project/that-doesnt-exist.json')
-  .expectBadge({ label: 'build', message: 'application not found' })
-
-t.create('Build status (private application)')
-  .get('/build/wercker/blueprint.json')
-  .expectBadge({ label: 'build', message: 'private application not supported' })
-
-t.create('Build passed')
+import { ServiceTester } from '../tester.js'
+export const t = new ServiceTester({
+  id: 'wercker',
+  title: 'Wercker',
+  pathPrefix: '/wercker',
+})
+
+t.create('Build status (deprecated)')
   .get('/build/wercker/go-wercker-api.json')
-  .intercept(nock =>
-    nock('https://app.wercker.com/api/v3/applications/')
-      .get('/wercker/go-wercker-api/builds?limit=1')
-      .reply(200, [{ status: 'finished', result: 'passed' }])
-  )
-  .expectBadge({
-    label: 'build',
-    message: 'passing',
-    color: 'brightgreen',
-  })
-
-t.create('Build failed')
-  .get('/build/wercker/go-wercker-api.json')
-  .intercept(nock =>
-    nock('https://app.wercker.com/api/v3/applications/')
-      .get('/wercker/go-wercker-api/builds?limit=1')
-      .reply(200, [{ status: 'finished', result: 'failed' }])
-  )
-  .expectBadge({ label: 'build', message: 'failing', color: 'red' })
-
-t.create('CI status by ID')
-  .get('/ci/559e33c8e982fc615500b357.json')
-  .expectBadge({ label: 'build', message: isBuildStatus })
-
-t.create('CI status by ID (with branch)')
-  .get('/ci/559e33c8e982fc615500b357/master.json')
-  .expectBadge({ label: 'build', message: isBuildStatus })
+  .expectBadge({ label: 'wercker', message: 'no longer available' })
 
-t.create('CI status by ID (no runs yet)')
+t.create('CI status (deprecated)')
   .get('/ci/559e33c8e982fc615500b357.json')
-  .intercept(nock =>
-    nock('https://app.wercker.com/api/v3')
-      .get('/runs?applicationId=559e33c8e982fc615500b357&limit=1')
-      .reply(200, [])
-  )
-  .expectBadge({ label: 'build', message: 'not built' })
+  .expectBadge({ label: 'wercker', message: 'no longer available' })