Have you read the documentation on this? It can be an internal (within the Kentico instance) or external (in your 3rd party application referencing the Kentico DLLs). It's really your choice. The benefit of having it external is that even if Kentico is not available, the changes are processed to the queue and can be later picked up with Kentico is available. If this isn't a concern, I'd suggest placing it within Kentico, then you don't have to reference the DLLs in another application.