The app typically would have a flow:
var outcome = {};
modtask.modcontroller.doChain(modtask, [['frame_getnode', modtask],
['framegetkey', '_matches', modtask],['framegetparams', modtask],
function(_push) {// query db to load content based on modtask.matches parameters
// 1. if not found set outcome.status = 404 and display (push) appropriate message// 2. if found display(push) content and outcome.success = true
_push(['nop']);},
function(_push) {push(['framefullnotify', outcome]);
} The key is to add crawable metadata that is consumable before the *frame_notify. We would recommend that you create a crawlmetadata module.This module will:
modtask.ldmod('marketing/sem/crawlmetadata').setMetaData({
title: '1',description: '2',
// used to make image availableaddress: 'address-to-the-pulse-entry'
}, function() {outcome.success = true;
_push(['nop']);});