# Mobile and Webapp communcation
## Sending an event from your webapp -> mobile app
When the user would click your button to launch the Atomic flow, instead of calling the JavaScript SDK, you'd send a message to the WebView housing your webapp.
```javascript
window.webkit.messageHandlers["init-atomic"].postMessage("example")
```
## Listening for the webapp event from your mobile app
```swift
extension ViewController: WKScriptMessageHandler{
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
guard let dict = message.body as? [String : AnyObject] else {
return
}
// "init-atomic" would be in this dictionary
print(dict)
// Call native iOS SDK
Atomic.presentTransact(...,
onCompletion: { result in
// Handle the result by sending it back into the webapp (see below)
}
)
}
}
```
## Sending the result back into your webapp
### Native side
```swift
webview.evaluateJavaScript(
"""
var event = new CustomEvent('atomic-event', {
detail: { name: "atomic-result", payload: \(result) }
});
document.body.dispatchEvent(event);
"""
)
```
### Mobile app side
```javascript
document.body.addEventListener(
'atomic-event',
({ detail }) => {
console.log(detail.name)
console.log(detail.payload)
}
)
```