Being the signal: webkit_gtk_page_signals[LOAD_FINISHED] = g_signal_new("load_finished", G_TYPE_FROM_CLASS(page_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), NULL, NULL, NULL, webkit_gtk_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 1, WEBKIT_GTK_TYPE_FRAME); The callback: g_signal_connect (G_OBJECT (page), "load-finished", G_CALLBACK (load_finished_cb), embed); (...) static void load_finished_cb (WebKitGtkPage *page, WebKitGtkFrame *frame, WebkitEmbed *wembed) (...) I get: ** (epiphany:17114): CRITICAL **: void webkit_gtk_marshal_VOID__OBJECT_BOOLEAN(GClosure*, GValue*, guint, const GValue*, void*, void*): assertion `n_param_values == 3' failed