Migrate custom content from Connect to Forge - Missing body in newly created content

Hi there,

I’m in the process of migrating a Connect app to Forge. Following this guideline Migrate custom content from Connect to Forge , I encountered a problem of Missing custom content body in the newly created content.

Here’re example commands that I use to reproduce the issue:

curl -v 'https://api.atlassian.com/ex/confluence/866c3a03-ec62-4717-91c4-1ad078bfcc60/wiki/api/v2/custom-content' \
  --data-raw $'{"type":"ac:my-app-key:my-content-key","pageId":"584318979","title":"Example1","body":{"value":"{\\"diagramType\\":\\"sequence\\",\\"code\\":\\"code\\"}","representation":"raw"}}'

curl 'https://api.atlassian.com/ex/confluence/866c3a03-ec62-4717-91c4-1ad078bfcc60/wiki/api/v2/custom-content/595656709?body-format=raw'

And here’s the example response that shows the missing content body:

{"id":"595656709","type":"ac:my-app-key:my-content-key","status":"current","title":"Exampl1","createdAt":"2025-08-16T05:13:31.124Z","authorId":"557058:3731f189-7e58-46c0-b5c7-697c5a021aee","spaceId":"163841","pageId":"584318979","body":{},"version":{"number":1,"message":"","minorEdit":false,"authorId":"557058:3731f189-7e58-46c0-b5c7-697c5a021aee","createdAt":"2025-08-16T05:13:31.124Z"}}

The module definition in manifest.yml:

confluence:customContent:
  - key: my-content-key
    supportedContainerTypes:
      - space
      - page
      - blogpost
    supportedChildTypes:
      - attachment
      - comment
    title: My Content
    resource: main
    migratedFromConnect: true

Can someone advise on this issue?

I also tested creating custom content using the forge type, e.g. “forge:d9e4002b-120b-426b-834b-402a4a5adce7:1e468bcd-89ab-49f0-a648-14620b9cde00:my-content-key”, but the “body” is still missing in the retrieved result.

Hi @whimet I think your module needs the bodyType: raw property. If it’s not defined it will default to using bodyType: storage, which seems to be happening in this case.

Let me know if that works for you

Thanks @twhite, the bodyType: raw makes sense. Unfortunately when I tried to test it today I kept getting 400 error with Invalid type ac:my-app-key:my-content-key, even I reverted the module definition change. I’ll try again later.

I tested again today, initially the creation succeeded with 201, but GET request got 404 until quite a long time later (>5mins). After about half hour another test succeded. So looks good now.

@whimet Yes sorry this is an issue on our end, a side effect of an existing cache (~5 minutes) is causing the new custom content module to not be recognised immediately.

We’ve made a fix for this and will begin rolling it out Monday AEDT time, so should be completely rolled out by midweek.

If you would like, you can send me your testing site URL and I can add you to the feature flag so you can try the fix early.

1 Like

@twhite It’ll be good if I can try the fix in my site http://whimet4.atlassian.net/, thanks for the clarification.

@whimet Ok I’ve added you, let me know if that has helped

@twhite I tested several times and it looks good to me, thanks.

1 Like

@twhite

My instance seems to have the same problem.

I have the same manifest + the bodyType: raw

I get systematically a body: {} when getting my newly created custom content.

Can that be related ?

Thanks for your reply.

Kind regards,